【问题标题】:Input value contains specific characters anywhere输入值在任何地方都包含特定字符
【发布时间】:2019-12-13 11:04:20
【问题描述】:

我有一个指令验证输入字段以确保它不包含&<>

.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 以检查输入值中任意位置的指定字符?

【问题讨论】:

  • /^[&amp;\&lt;\&gt; ]*$/ => /[&amp;&lt;&gt;]/
  • 嗯,这很简单:o 将其添加为答案并且不接受它

标签: javascript angularjs regex


【解决方案1】:

您想匹配字符串中任何一个出现的 &lt;&gt;&amp;,但您的正则表达式匹配包含 0 个或多个 &lt;&gt;&amp; 或仅限空格。见your regex demo及其visual graph

你需要使用

var regExp = /[&<>]/;

另外,你在字符集中的字符没有什么特殊的,不需要转义它们。

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多