当前位置: 首页 > 知识库问答 >
问题:

数据库中的正则表达式在角度方向ng模式下不起作用

夏宏旷
2023-03-14

我在angular中有一个表单,其中输入(姓名、电子邮件、电话号码等)是使用angular指令生成的:

    .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}}”验证有效,但抛出一个错误:

    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

数据库中的表达式: ^(([^

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

    $scope.FormatedRegex = '/' + campo.validacion + '/';

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

当我没有格式化表达式,但在控制台中为需要使用正则表达式验证的表单中的每个字段抛出一个错误时,我的表单将正确验证。

如何引用正则表达式或格式化正则表达式,以确保不会出现错误,并且字段按预期进行验证?

共有1个答案

邬阳
2023-03-14

使用正则表达式构造函数表示法从中构建正则表达式对象:

$scope.FormatedRegex = new RegExp(campo.validacion);

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

要获取底层模式,可以使用$scope。FormatedRegex。来源

 类似资料:
  • 我需要制作一个密码模式验证器 密码应具有: < li>1个大写字母 < li>1个小写字母 < li >一个号码 < li >最小长度为8。 我发现了这个正则表达式模式: 然而,验证器总是声称我的输入无效 根据 https://regex101.com/r/AfAdKp/1 此值应该是有效的。 编辑:澄清一下,Test1234应该可以工作

  • 我要匹配以下字符串: 包含unicode空格(不要问我为什么)<代码>/,\s*,/u在regex101中工作正常。 但是(?u),\s*,“在clojure中不起作用: 为什么会失败?

  • 我需要编写一个具有以下规则的正则表达式: null null 这些示例无效: > 12--11(因为它包含两个连字符) 1-2345(因为它包含5号) <>是字符出现在最后一个位置,那么在字符之前必须有一个数字not hypen。 即11-A(必须不及格)11-1A(必须及格)

  • 我是正则表达式的初学者,并尝试搜索特定的数字模式。以下数据以 XML 格式嵌入。 要求是提取数据(最里面的列表)。在这个例子中,数据从24779开始到24760。注意:每次数据可能不是从“24”开始。因此,我计划通过以下逻辑提取:如果标签名(在本例中:DUT_1_PC)具有非零的有效数据,并且有效数据的计数大于100,用逗号分隔,则提取该列表及其标签名(DUT_1_PC)。 我无法提取所需的数据。

  • form control()validators . pattern()与此regex表达式有问题,用于验证1个字符、1个数字、最少8个字符、最多16个字符的密码。 通过验证程序的测试密码: asdfqwer//不应通过验证器 zxcvasdf//不应通过验证器 asdfqwer2 //这是正确的 不通过验证器的测试密码: 程序//这是正确的 在服务器端尝试这种模式或者使用在线regex测试平台都

  • 问题内容: 我有一个正则表达式: 这应该与该字符串匹配并返回三个捕获(根据Rubular) 这是我的代码: 当有三个时,此打印输出1(组),所以我只能这样做,只会返回32。 问题答案: 调用查找匹配的 下一个 实例,如果没有更多实例,则返回false。尝试调用它三次,看看是否有所有预期的组。 为了澄清,正在尝试 在正则表达式中 找到第一个组 表达式 。您的正则表达式中只有一个这样的组表达式,因此永