谁能告诉我RegEx将如何验证国际电话号码,包括数字之间的空格,并允许这些字符:- ( )
.
字符串中数字的数量并不重要,我只是希望用户能够键入类似示例1或2的内容,如果他们愿意的话:
示例:
+44 (0) 207 111 1111
442071111111
我已经通读并测试了一些类似问题的答案,以我的理解,但到目前为止,没有一个是为我工作的方式,我希望他们。
请有人能帮我一个明确的解释,上面应该如何写的验证?
非常感谢任何能提供帮助的人。
谁能告诉我RegEx将如何验证国际电话号码,包括数字之间的空格,并允许这些字符:- ( )
.
字符串中数字的数量并不重要,我只是希望用户能够键入类似示例1或2的内容,如果他们愿意的话:
示例:
+44 (0) 207 111 1111
442071111111
9条答案
按热度按时间kx1ctssn1#
试试这个代码
HTML代码
JS代码
vh0rcniy2#
参见A comprehensive regex for phone number validation
快速备忘单
/^
[\s]
或\s
[(]
和[)]
。使用\(
和\)
是丑陋的,会使事情变得混乱。?
-
或[-]
。但是,如果不将其放在一系列其他字符的开头或结尾,则可能需要对其进行转义:\-
[-.\s]
将需要连字符、句点或空格。最后一个括号后面的问号将使所有这些内容对于该插槽都是可选的。\d{3}
:需要3位数字:000 - 999。简写为[0-9][0-9][0-9]
。[2-9]
:该插槽需要数字2 - 9。(\+|1\s)?
:接受"加号"或1加空格(管道符|
是"or"),并使其成为可选。"加号"必须转义。[246]
将需要2、4或6。[77|78]
将需要77或78。$/
:结束表达式qmelpv7a3#
这是一个长正则表达式,但它支持两种格式(例如2是一个有效的国际号码,必须以+或00开头):
这允许扩展以及多种格式和分隔符选择。
匹配:
在$n上,它可以节省:
1.国家指标
1.电话号码
1.延长
同样的答案在这里给出:一个用于电话号码验证的综合正则表达式(直接链接到我的答案)
mspsb9vt4#
希望这能帮助您理解JavaScript RegEx。
7kjnsjlb5#
**甚至不要尝试。**试图防止您认为无效的输入可能会导致用户无法输入完全有效的电话号码而生气。如果用户确实想输入无效的电话号码,他/她无论如何都能做到。
x8diyxa76#
试试吧
nafvub8i7#
尝试使用libphonenumber-js包的**isValidPhoneNumber(phoneNumber,countryCode)方法。第一个参数是以"+"**开头的电话号码。第二个参数是国家/地区代码(例如:“US”、“IN”)。这有助于您准确验证任何国际号码。
5ssjco0h8#
国际电话号码的最佳库:google/libphonenumber
以下是CDN的示例:
tsm1rwdh9#
下面是以宽松方式验证国际电话号码的更好选择。这不是严格验证
/^\s (?:+?(\d {1,3}))?([-.(](\d {3})[-.)])?((\d {3})[-.](\d {2,4})(?:[-. x]*(\d+))?)\s *$/gm
一个有效的Javascript函数如下所示
******在零到无限次之间匹配上一个令牌,尽可能多地匹配,根据需要返回(贪婪)
非捕获组(?:+?(\d {1,3}))?
第一捕获组(\d {1,3})
第二捕获组([-.(](\d {3})[-.)])?
匹配下面列表中的单个字符[-.(]
******在零到无限次之间匹配上一个令牌,尽可能多地匹配,根据需要返回(贪婪)
匹配下面列表中的单个字符[-.)]
******在零到无限次之间匹配上一个令牌,尽可能多地匹配,根据需要返回(贪婪)
第四捕获组((\d {3})[-.](\d {2,4})(?:[-. x](\d+))?)
第五捕获组(\d {3})
匹配下面列表中的单个字符[-.]
******在零到无限次之间匹配上一个令牌,尽可能多地匹配,根据需要返回(贪婪)
第六捕获群(\d {2,4})
非捕获组(?:[-. x]*(\d+))?
匹配下面列表中的单个字符[-. x]
******在零到无限次之间匹配上一个令牌,尽可能多地匹配,根据需要返回(贪婪)
第7捕获组(\d+)
******在零到无限次之间匹配上一个令牌,尽可能多地匹配,根据需要返回(贪婪)
这将对以下模式和更多模式测试为阳性
123 - 4567(九二六)123 - 4567(九二六)123 - 4567(九二六)123 - 4567(九二六)123 - 4567(九二六)