正则表达式语法错误 - 无需重复

RegEx Syntax Error - nothing to repeat

本文关键字:语法 错误 正则表达式      更新时间:2023-09-26

有人可以告诉我为什么这个正则表达式失败吗?http://jsfiddle.net/SrKPG/

^('+[0-9]+ )[1-9]{2,} [0-9]{2,}('-[0-9]+|)$

有趣的是 - 当我在 http://jsregex.com/测试它时,它可以工作。但是在我的代码中它失败了。

您不匹配的原因是您的第二个数字序列不接受零:

^([+][0-9]+ ([1-9]{2,} [0-9]

{2,}(''-[0-9]+|($

+43 660 1234556

它失败了,因为您将其编写为字符串,而没有转义'

你可以写

var regex = "^(''+[0-9]+ )[1-9]{2,} [0-9]{2,}(''-[0-9]+|)$";

但是,您应该直接使用正则表达式文字,而不是使用字符串和正则表达式构造函数:

text.match(/^('+[0-9]+ )[1-9]{2,} [0-9]{2,}('-[0-9]+|)$/g);

您还拒绝了中间的0,这不符合您的测试字符串。似乎你想要的是

text.match(/^('+[0-9]+ )[0-9]{2,} [0-9]{2,}('-[0-9]+|)$/g);

你的

    "^('+[0-9]+ )[1-9]{2,} [0-9]{2,}('-[0-9]+|)$"

正确

    "^(''+[0-9]+ )[1-9]{2,} [0-9]{2,}(-[0-9]+|)$"

双重转义是 JavaScript 字符串文字的要求。它与正则表达式无关。

解析程序后,字符串文字在内存中变得"^(+[0-9]+ )[1-9]{2,} [0-9]{2,}(-[0-9]+|)$",因为'+(而不是,比方说,'n(在 JS 字符串中没有意义。

此时,正则表达式引擎抱怨随之而来的孤独+

请注意,有或无(something|)最好写成(something)?


除此之外:您不得使用正则表达式来验证电话号码。

编辑:证据在评论中。 ;)