我在正则表达式下面检查了不同格式的有效电话号码,它还支持阿拉伯数字:

/^(\+?\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

请注意,您可能需要重新检查模式,尾随的\+?看起来很可疑,并且模式的末尾没有$(字符串锚的结尾)(如果您计划匹配整个字符串,则需要锚)。

09-10 05:31