我正在尝试制作一个可以匹配电话号码的正则表达式,所以请告诉我电话号码是否有效。
我想验证电话号码之前是否有国家/地区ID,该格式是否正确。
例如: +(33)0123456789 我想确定用户是否开始键入第一个括号,必须在其后加上数字并以右括号结尾。
我成功使用了PCRE引擎
^[+]?((\()?(?(2)[0-9]{1,4})(?(2)\)))?([0-9]{2}){1}([\.\- ]?[0-9]{2}){4}$
但是我意识到这种方式不适用于javascript引擎,不支持有条件的。
^[+]?((\()?((?=\2)[0-9]{1,4})((?=\2)\)))?([0-9]{2}){1}([\.\- ]?[0-9]{2}){4}$
它不能满足我的需求。我想检查是否设置了第一个括号,然后必须在其后面加上数字和右括号。
所以我问您javascript是否有解决方法?
一些帮助将不胜感激,谢谢:)
答案 0 :(得分:1)
正则表达式的((\()?(?(2)[0-9]{1,4})(?(2)\)))?
部分与可选的较小模式序列匹配。 (\()?
匹配可选的(
并将其放入组2。然后,如果组2匹配,(?(2)[0-9]{1,4})
匹配1-4位数字。然后,如果第2组匹配,则(?(2)\))
匹配)
。基本上,它等于(?:\([0-9]{1,4})\))?
。
因此,这里不需要条件构造。
您可以使用
^\+?(?:\([0-9]{1,4})\)?[0-9]{2}(?:[. -]?[0-9]{2}){4}$
请参见regex demo
详细信息
^
-字符串的开头\+?
-可选的+
(?:\([0-9]{1,4})\)?
-可选序列:(
,1到4位数字和)
[0-9]{2}
-2位数字(?:[. -]?[0-9]{2}){4}
-出现4个可选空格,点或-
,后跟两位数字$
-字符串的结尾。