正则表达式模式抛出Lexer错误AngularJS

时间:2016-01-15 20:25:53

标签: javascript angularjs regex

在输入元素

上使用ng-pattern时,我收到了Lexer错误

我的正则表达式是测试电话号码,输入看起来像这样:

<input 
    type="text"
    class="phone"
    ng-pattern="(\(?([0-9]{3})\)?)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})"
    placeholder="Phone Number" ng-model="contactFormVM.contact.phone"
    required />

然后Angular对我大吼大叫并给了我这个错误:

Error: [$parse:lexerr] Lexer Error: Unexpected next character  at columns 1-1 [\] in expression [(\(?([0-9]{3})\)?)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})].

现在我可以看到它对我的\感到愤怒。但是我不知道如何编写正则表达式而不逃避它。有趣的是,测试确实有效并且确实可以正确验证,但我讨厌抛出错误。

有关为何发生这种情况的任何想法?

由于

1 个答案:

答案 0 :(得分:5)

您需要转义字符串中的任何\因为ngPattern接受该字符串并将其包装在new RegExp('stringhere')requires you to escape that character