在输入元素
上使用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})].
现在我可以看到它对我的\
感到愤怒。但是我不知道如何编写正则表达式而不逃避它。有趣的是,测试确实有效并且确实可以正确验证,但我讨厌抛出错误。
有关为何发生这种情况的任何想法?
由于
答案 0 :(得分:5)
您需要转义字符串中的任何\
因为ngPattern接受该字符串并将其包装在new RegExp('stringhere')
中requires you to escape that character。