正则表达式语法错误 - 无需重复
RegEx Syntax Error - nothing to repeat
有人可以告诉我为什么这个正则表达式失败吗?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)?
。
除此之外:您不得使用正则表达式来验证电话号码。
编辑:证据在评论中。 ;)
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 未捕获的语法错误:意外的标记{
- "未捕获的语法错误:意外的标记}"
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- $(input[]).仅在firefox中出现每个抛出语法错误
- 为什么浏览器没有为语法错误抛出异常
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获的语法错误:意外的令牌,
- jQuery.getJSON失败,语法错误
- "未捕获的语法错误:意外的标记"角度JS
- 参数列表Three.js之后的未捕获语法错误:缺少)
- 循环的Javascript冻结浏览器,没有语法错误
- 为什么匿名函数本身就是javascript中的语法错误
- 这怎么不是语法错误?这毫无意义!(javascript)
- 语法错误:缺少:在属性 ID 之后
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]