我有一个角度表格,其中输入(名称,电子邮件,电话号码等)是使用角度指令生成的: .directive('camposProductos', function () {return { restrict: 'AEC', template: '<div class="row" data-ng-class="{true: \'error\', false: \'good\'}[datosBaseForm.campo{{campo.id}}.$dirty && datosBaseForm.campo{{campo.id}}.$invalid]"> ' + '<span class="fa fa-check" aria-hidden="true" data-ng-show="datosBaseForm.campo{{campo.id}}.$valid"></span>' + '<label class="labelStyle col-md-4 col-sm-4 col-xs-12">{{campo.nombre}}:<span>*</span></label>' + '<div class="col-md-7 col-sm-8 col-xs-12 noPaddingLat">' + '<input class="inputBoxStyle" id="{{campo.id}}" data-ng-model="campo.Valor" data-ng-model-options="{ updateOn: \'blur\' }" name="campo{{campo.id}}" type="{{campo.tipo}}" required="" data-ng-pattern="{{campo.validacion}}" placeholder="{{campo.marcador}}">' + '<div data-ng-show="datosBaseForm.$submitted || datosBaseForm.campo{{campo.id}}.$touched">' + '<span data-ng-show="datosBaseForm.campo{{campo.id}}.$error.required" class="errorText">El {{campo.nombre}} es obligatorio.</span>' + '<span data-ng-show="datosBaseForm.campo{{campo.id}}.$error.{{campo.tipo}}" class="errorText">Por favor introducir un {{campo.nombre}} valido.</span>' + '</div>' + '</div>' + '</div>', replace: true, transclude: true};});当我引用用于验证输入的正则表达式时:data-ng-pattern =“ {{campo.validacion}}”验证有效,但是角度抛出错误: angular.js:13920 Error: [$parse:lexerr] http://errors.angularjs.org/1.5.8/$parse/lexerr?p0=Unexpected%20nextharacter%20&p1=s%200-0%20%5B%5E%5D&p2=%5E((%5B%5E%3C%3E()%5C%5B%5C%5D%5C%5C.%2C%3B%3A%5Cs%40%22%5D%2B(%5C.%5B%5E%3C%3E()%5C%5B%5C%5D%5C%5C.%2C%3B%3A%5Cs%40%22%5D%2B)*)%7C(%22.%2B%22))%40((%5C%5B%5B0-9%5D%7B1%2C3%7D%5C.%5B0-9%5D%7B1%2C3%7D%5C.%5B0-9%5D%7B1%2C3%7D%5C.%5B0-9%5D%7B1%2C3%7D%5D)%7C((%5Ba-zA-Z%5C-0-9%5D%2B%5C.)%2B%5Ba-zA-Z%5D%7B2%2C%7D))%24数据库中的表达式为:^(([[^ ()[] \。,;;:\ s @“] +(。[^ ()[] \。,; :: \ s @”] +)*)|(“。+”))@(([[0-9] {1,3}。[0-9] {1,3}。[0-9] {1,3}。[ 0-9] {1,3}])|(([[a-zA-Z-0-9] +。)+ [a-zA-Z] {2,}))$当我在https://www.debuggex.com/中检查它时,这是一个有效的表达式我已经看到,对于ng-pattern,您可能需要在表达式的每一端添加一个“ /”才能使其正常工作。当我在表达式的每个末尾添加“ /”时: $scope.FormatedRegex = '/' + campo.validacion + '/';角度的$ parse:lexerr错误不再出现,但验证不再起作用。当我不设置表达式格式时,我的表单可以正确验证,但是在控制台中针对需要使用正则表达式表达式进行验证的表单中的每个字段均会引发错误。如何引用正则表达式或格式化正则表达式,以便不出现错误且字段可以按预期验证? 最佳答案 使用正则表达式构造函数符号从其构建正则表达式对象:$scope.FormatedRegex = new RegExp(campo.validacion);这将产生一个RegExp对象,您可以在代码中进一步使用它。要获取基础模式,可以使用$scope.FormatedRegex.source。关于javascript - 来自数据库的正则表达式无法在 Angular Directive(指令)ng-pattern中工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43638843/ 10-12 13:28