首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不工作于角指令ng模式的数据库的正则表达式

不工作于角指令ng模式的数据库的正则表达式
EN

Stack Overflow用户
提问于 2017-04-26 15:42:43
回答 1查看 175关注 0票数 2

我有一个角度形式,其中输入(姓名、电子邮件、电话号码等)是使用角指令生成的:

代码语言:javascript
复制
    .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
};

});

当我引用用于验证输入的regex表达式:data-ng-pattern=“{{campo.validacion}”时,验证工作正常,但是角抛出一个错误:

代码语言:javascript
复制
    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@]+(.[^<>()[],https://www.debuggex.com/ })$这是一个有效表达式,当我在https://www.debuggex.com/中检查它时)

我已经看到,对于ng模式,您可能需要在表达式的两端添加一个"/“才能工作。当我在表达式的每一端添加"/“时:

代码语言:javascript
复制
    $scope.FormatedRegex = '/' + campo.validacion + '/';

角$parse:lexerr错误不再出现,但验证不再有效。

当我不格式化表达式时,我的表单验证是正确的,但在窗体中的每个字段中抛出一个错误,需要使用regex表达式进行验证。

我如何引用正则表达式或格式化正则表达式,以便不给出错误并使字段按预期进行验证?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-27 09:34:17

使用regex构造函数符号从regex对象构建regex对象:

代码语言:javascript
复制
$scope.FormatedRegex = new RegExp(campo.validacion);

这将导致一个RegExp对象,您可以在代码中进一步使用它。

要获得底层模式,可以使用$scope.FormatedRegex.source

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43638843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档