我在正则表达式下面检查了不同格式的有效电话号码,它还支持阿拉伯数字:
/^(\+?\s{0,2}([0-9\u0660-\u0669]{1,3}))?[-,.\s]{0,2}\(?[0-9\u0660-\u0669]{1,5}\)?[-,.\s]{0,2}[0-9\u0660-\u0669]{1,5}[-,.\s]{0,2}[0-9\u0660-\u0669]{1,6}\s{0,2}\+?/
但这对于有效数字
+(91)-20-xxxxxxxx
之一返回false 最佳答案
与+
匹配的第一个可选组需要可选的(
和)
:
^(\+?\(?\s{0,2}[0-9\u0660-\u0669]{1,3}\)?)?[-,.\s]{0,2}\(?[0-9\u0660-\u0669]{1,5}\)?[-,.\s]{0,2}[0-9\u0660-\u0669]{1,5}[-,.\s]{0,2}[0-9\u0660-\u0669]{1,6}\s{0,2}\+?
^^^ ^^^
请参见regex demo
请注意,您可能需要重新检查模式,尾随的
\+?
看起来很可疑,并且模式的末尾没有$
(字符串锚的结尾)(如果您计划匹配整个字符串,则需要锚)。