我正在尝试制作一个可以匹配电话号码的正则表达式,以便告诉我电话号码是否有效。
我想验证电话号码前是否有国家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 中是否有解决方法来做到这一点?
非常感谢一些帮助,谢谢 :)
最佳答案
正则表达式的 ((\()?(?(2)[0-9]{1,4})(?(2)\)))?
部分匹配一个可选的较小模式序列。 (\()?
匹配可选的 (
并将其放在第 2 组中。然后,(?(2)[0-9]{1,4} )
如果第 2 组匹配,则匹配 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 次可选空格、点或-
,后跟2位数$
- 字符串结尾。
关于javascript - 条件正则表达式javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53744455/