[英]Validate us number with regular expression
我正在freecodecamp上进行练习,以验证我们的电话号码。
用户可以选择任何方式填写表单字段,只要它是有效的美国号码即可。 以下是美国号码的所有有效格式:
555-555-5555,(555)555-5555,(555)555-5555、555 555 5555、5555555555、1 555 555 5555
我正在使用RegEx来测试输入。我在regex101上键入这些表达式
(([1]\s)?(\()*(\d{3})(-|\)|\)\s|\s)*(\d{3})(-|\s)*\d{4})
测试输入如下:
2 **(757)622-7382 **返回true
-1(757)622-7382返回true
10 **(757)622-7382 **返回true
我如何测试前导2,减号和10。
我建议您看一下OWASP验证正则表达式存储库,因为它们是验证和持续更新的主题
对于美国电话(在撰写本文时),建议的RegEx为^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$
((-)?\\d{0,2} )?
注意{0,2}
之后的space
(-)? // may begin with a minus
(\d{1,2})? // may have 1 or 2 digits before the actual number
( )? // may have a space after that
可能会晚一点,但是这是解决方法。
/^(1\s?)?(\(\d{3}\)|\d{3})[\s\-]?\d{3}[\s\-]?\d{4}$/;
您确实希望表达式的开头有^来匹配字符串的第一个字符,并且您想在结尾使用$来使表达式知道这是结尾。
您可以在以下github github链接上查看以上答案以及另一种方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.