无效的正则表达式:单独的量词括号

问题描述 投票:0回答:2

我有一个接受这些格式的html手机模式:

+61 x xxxx xxxx,
+61xxxxxxxxx,
0x xxxx xxxx,
0xxxxxxxxx,
xxxx xxxx,
xxxxxxxx,
+xx xxx xxx xxx,
+xxxxxxxxxxx,
0xxx xxx xxx,
0xxxxxxxxx

几个月前它正在工作,现在突然我的手机领域没有验证。我有这个错误:

Pattern attribute value ^(?:0|\(?\+61\)?\s?|0061\s?)[1-79](?:[\.\-\s]?\d\d){4}|(\d{4}[\s]\d{4})|(\d{8})|(\d{4}[\s]\d{3}[\s]\d{3})|(\+61\[\s]\d{3}[\s]\d{3}[\s]\d{3})|(\+61\s\d{3}\s\d{3}\s\d{3})$ is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^(?:0|\(?\+61\)?\s?|0061\s?)[1-79](?:[\.\-\s]?\d\d){4}|(\d{4}[\s]\d{4})|(\d{8})|(\d{4}[\s]\d{3}[\s]\d{3})|(\+61\[\s]\d{3}[\s]\d{3}[\s]\d{3})|(\+61\s\d{3}\s\d{3}\s\d{3})$/: Lone quantifier brackets 
regex
2个回答
3
投票

到目前为止,没有人愿意在你的模式中显示错误。

…|(\+61\[\s]\d{3}[\s]\d{3}[\s]\d{3})|(\+61\s\d{3}\s\d{3}\s\d{3})$
       ^

你错误地插入了一个反斜杠,逃离了开口支架,所以使它成为一个普通的角色,并留下了右括号Lone。 (遗憾的是,错误信息有些误导,因为这些括号当然不是quantifier brackets。)


0
投票

这意味着,模式无效。

如果你想匹配澳大利亚的手机,你可以使用:

pattern="^(?:0|\(?\+61\)?\s?|0061\s?)[1-79](?:[\.\-\s]?\d\d){4}$"

模式发现here

示例:https://jsfiddle.net

© www.soinside.com 2019 - 2024. All rights reserved.