条件正则表达式javascript

时间:2018-12-12 13:46:26

标签: javascript regex pcre

我正在尝试制作一个可以匹配电话号码的正则表达式,所以请告诉我电话号码是否有效。

我想验证电话号码之前是否有国家/地区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是否有解决方法?

一些帮助将不胜感激,谢谢:)

1 个答案:

答案 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个可选空格,点或-,后跟两位数字
  • $-字符串的结尾。