国际电话号码验证与RegEx
我需要处理国际代码的电话号码,但我不需要手机是一种特定的格式。我发现了很多关于如何将它应用于美国,西班牙等的例子......但没有一个只允许输入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 +号使用
- 确保号码长度至少为10个字符,少于20个字符。
如果1.太复杂了,你能告诉我如何在没有任何特定规则的情况下允许空格和/或破折号,所以一个数字如:-33-999 999 + 99-99,而完全错误仍然有效。
由于
^+(\ 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。它会有很大的帮助。
这是我设法让我的正则表达式来尝试出来后工作最接近[此处输入链接的描述] [regexr]由@ mlkptl35
^([+]|[00]{2})([0-9]|[ -])*
建议它将使字符串:
要么开始以+或00为国际部分,后跟最多3位数字
允许任何数字,空格或 - 此后
通过上述正则表达式,我能够处理好以下号码:
+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”专家道歉。
如果我有时间改进它,我会提供更新。
^- \ d * - \ d * \ s \ d * \ + \ d * - \ d * $ regx for -33-999 999 + 99-99 – mlkptl35
感谢您指点我正确的方向和快速速成课程!我真的需要学习如何一劳永逸地使用RegEx。非常有用,但在同一时间完全痛苦! – Thierry
如果它可以帮助你检查这个谷歌的公共库解析,格式和验证国际电话号码。 https://github.com/googlei18n/libphonenumber – mlkptl35