我正在尝试在javascript中使用以下正则表达式来验证英国电话号码输入:
^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$
毋庸置疑,它适用于各种正则表达式测试程序(请参阅:https://regex101.com/r/lJ1uS2/1)但是只要它被某些javascript运行并运行/实例化,就会抛出无效的组错误。看到这个小提琴:
代码:
var reg = new RegExp("^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$","i")
在运行时检查控制台,它会产生:
通过它搜索,看不出有什么问题,没有负面的背后等等。Uncaught SyntaxError:无效的正则表达式: / ^((:( ?: 0(:0 | 11))[S - ](| +)44??????)[S - ]((?: 0)[S-]???? ?0)(?: d {2})[S - ] d {4} [S - ] d {4} | |(?)??????d {3})[S - ] d {3- } [S - ] d {3,4} |?d {4})[S - ](?: d {5} |?d {3} [S - ] d {3})|?d {5 })[S - ] d {4,5} | 8(?:?00 [S - ] 11 [S - ] 11 | 45 [S - ] 46 [S - ] 4D))(?????? (:[S - ](?: X |转S |#)d +????))$ /? 无效的群组
有什么想法吗?
干杯