javascript - 条件正则表达式javascript

标签 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 中是否有解决方法来做到这一点?

非常感谢一些帮助,谢谢 :)

最佳答案

正则表达式的 ((\()?(?(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/

相关文章:

javascript - 如何让我网站上的所有外部链接都提出确认

java - 如何使用正则表达式提取大括号中的单词?

ruby - 在 If, Else 语句中测试正则表达式

php - 在 MySQL 中使用 PCRE 正则表达式

regex - PCRE 正则表达式替换双引号内的文本模式

php - PCRE 正则表达式。从字符串 2 的末尾删除字符串 1,其中包含任意数量的 * 字符

javascript - 如何像 Ember.js 那样抽象 ajax 请求的异步行为?

Javascript:使用切换按钮隐藏和显示 div 标签

javascript - 如何使用 JQuery 的 get 函数发布动态 JSON 字符串?

regex - 正则表达式中勉强的 '?' 有什么实际用途吗?