我在运行时遇到以下错误:
Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 11-11 [\] in expression [[0-9]{1,4}(\.[0-9]{1,3})?].
我的HTML看起来像这样
<input type="text"
class="form-control"
name="amount"
ng-pattern="{{ctrl.pattern}}"
ng-model="ctrl.amount">
我的AngularJS控制器中的赋值如下:
ctrl.pattern = '[0-9]{1,4}(\\.[0-9]{1,3})?';
根据我的理解,AngularJS在正则表达式的开头和结尾追加^和$,效果很好。问题是表达式中间的正则表达式字面值未被接受。我想要点作为文字,而不是任何角色,所以我需要一种方法来逃避它,但词法分析者不喜欢它。有办法解决这个问题吗?
答案 0 :(得分:1)
此问题已经报告here,但他们不会修复它,因为它们是一个不常见的用例。
请这样做:
ctrl.pattern = /^[0-9]{1,4}([.][0-9]{1,3})?$/;
这样,正则表达式将被评估为正则表达式对象,而不是RegExp
的字符串参数,在这种情况下,我们需要添加^
,$