作为输入元素的属性我有:
ng-pattern="^\d{5}(?:[-\s]\d{4})?$"
这个表达方式错了吗?
我收到此错误:
Lexer Error: Unexpected next character at columns 0-0 [^] in expression [^\d{5}(?:[-\s]\d{4})?$].
答案 0 :(得分:28)
尝试在/
之前和^
之后添加$
。
<强> E.g。强>
ng-pattern="/^\d{5}(?:[-\s]\d{4})?$/"
希望它有所帮助!
答案 1 :(得分:5)
默认情况下,angularjs使用^
和$
符号包装正则表达式。删除那些。
来自代码的片段:
var f, g = d.ngPattern || d.pattern;
d.$observe("pattern", function(a) {
C(a) && 0 < a.length && (a = new RegExp("^" + a + "$"));
答案 2 :(得分:2)
如果你想把你的正则表达式放在代码中,而不是html:
在控制器中:
function SomeController() {
var vm = this;
vm.regex = /^\d{5}(?:[-\s]\d{4})?$/.source;
}
在html中(假设您的控制器别名为“ctrl”):
ng-pattern="ctrl.regex"
答案 3 :(得分:0)
如果有人遇到类似的问题: Lexer错误:表达式[#sts。#Contact]
中第7-7列[#]处出现意外的下一个字符使用:
控制器:
app.controller('XXController',
function($rootScope, $scope, $q, XXService, configuration, constants) {
$scope.consts = constants.constants;
//...
});
<强> constants_en.json:强>
{
"#Contact":"Contact Details",
...
}
<强> HTML:强>
<label for="contact">{{ consts.#Contact }} </label>
解决方案:在HTML中使用以下内容:
<label for="customer">{{ consts['#Contact'] }}</label>