输入值在任何地方都包含特定字符

时间:2019-12-13 11:04:20

标签: javascript angularjs regex

我有一条指令可以验证输入字段,以确保其中不包含&<>

.directive('refValidate', [function () {

var regExp = /^[&\<\> ]*$/;

return {
    require: 'ngModel',
    link: function(scope, elem, attr, ctrl) {

        function myValidation(value) {
            if (!regExp.test(value)) {
                ctrl.$setValidity('validRef', true);
            } else {
                ctrl.$setValidity('validRef', false);
            }
            return value;
        }
        ctrl.$parsers.push(myValidation);
    }        
};

}]);

仅当值以指定字符开头时才发送false,这需要检查值是否在值中的任何位置包含它们。

问题

如何修改我的reg exp以检查输入值中任何位置的指定字符?

1 个答案:

答案 0 :(得分:2)

您要匹配字符串中任何一次出现的<>&,但是您的正则表达式匹配包含0个或多个<的字符串, >&或仅空格。参见your regex demo及其visual graph

enter image description here

您需要使用

var regExp = /[&<>]/;

此外,您在字符集中具有的字符也不是特殊字符,无需转义。