2017-07-16 363 views
1

我需要处理国际代码的电话号码,但我不需要手机是一种特定的格式。我发现了很多关于如何将它应用于美国,西班牙等的例子......但没有一个只允许输入00或+的数字,允许使用空格和/或破折号,或者没有空格或破折号。国际电话号码验证与RegEx

我得在一个asp.net MVC 5应用程序上的电话号码领域的应用下面的表达式:

[RegularExpression(@"^\+?\d*$", ErrorMessage = "Not a valid Telephone number.")] 

在它的立场,它处理以下情况:

+19999999999 
0019999999999 

这是好的,但它不允许空格和/或破折号,所以这样的数字:

+ 1 999 999 99 99 
+32 999-999-99-99 
+7 999 999-99-99 

不被视为有效。

如何包含空格和/或破折号。更具体地,是能够确保:

  1. 仅存在1个空间或数字之间1个破折号
  2. 允许没有空间或根本没有破折号(当前场景)
  3. 确保仅存在1 +号使用
  4. 确保号码长度至少为10个字符,少于20个字符。

如果1.太复杂了,你能告诉我如何在没有任何特定规则的情况下允许空格和/或破折号,所以一个数字如:-33-999 999 + 99-99,而完全错误仍然有效。

由于

回答

1

^+(\ S)\ d * \ S \ d {3}(\ S | - )?\ d {3}(\ S | - )?\ d * (\ S | - )?\ d * $

以上至REGx

  • \ s的用于检查任何空白

  • (\ S)?装置可以有空白或也许不会

  • 用于验证长度可以取代*含{响开始,响端} 例如{10,20}

  • \ d {3}表示只接受3位在那个地方

  • (\ s | - )?意味着可以有空白或 - 不能同时使用

=================================== =====================================

您可以使用本网站进行测试http://regexr.com/ 请参阅有关更多信息,
Regx Tested

休息是高达你这个形象。一旦你学会了,你可以建立自己所需的regx,你应该在上面提到的网站上检查正则表达式cheatsheet。它会有很大的帮助。

+0

^- \ d * - \ d * \ s \ d * \ + \ d * - \ d * $ regx for -33-999 999 + 99-99 – mlkptl35

+0

感谢您指点我正确的方向和快速速成课程!我真的需要学习如何一劳永逸地使用RegEx。非常有用,但在同一时间完全痛苦! – Thierry

+0

如果它可以帮助你检查这个谷歌的公共库解析,格式和验证国际电话号码。 https://github.com/googlei18n/libphonenumber – mlkptl35

0

这是我设法让我的正则表达式来尝试出来后工作最接近[此处输入链接的描述] [regexr]由@ mlkptl35

^([+]|[00]{2})([0-9]|[ -])* 

建议它将使字符串:

  1. 要么开始以+或00为国际部分,后跟最多3位数字

  2. 允许任何数字,空格或 - 此后

通过上述正则表达式,我能够处理好以下号码:

+32999999 
+1-99-999-99-99 
+33 99-999-99-99 
+7 999999999 
+44 999999999 
+353 99-9999999 
+1 99-999-9999 
0044999999999 
00353 99-999 9999 

等。

我敢肯定,这并不完美,但我只是在学习,所以请向所有“RegEx”专家道歉。

如果我有时间改进它,我会提供更新。