编程语言
首页 > 编程语言> > javascript-jQuery-删除不匹配regEx的字符

javascript-jQuery-删除不匹配regEx的字符

作者:互联网

我正在尝试使用jquery来验证表单.

这是用户在文本框中允许的模式.

var pattern = /^[a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;

如果用户键入除此以外的其他任何内容,则必须用“”代替.

$(document).ready(function() {
  $('#iBox').blur(function() {
     var jVal = $('#iBox').val();
  if(jVal.match(pattern)) {
   alert("Valid");
  } else {
   alert("New "+jVal.replace(!(pattern),""));
                }
    });
  });
});

但是替换功能不能以这种方式工作.

解决方法:

使用negated character class,在左方括号后立即写一个^:

/[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g

这里的^的特殊含义不同于正则表达式中的常规含义(通常与行的开头匹配).

因此,您更正后的代码将如下所示:

var pattern = /[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;
// ...
alert("New " + jVal.replace(pattern, ""));

还要注意,调用replace实际上并不会更改原始字符串-它会返回该字符串的修改后的副本.如果要修改jVal的值,则需要重新分配它:

jVal = jVal.replace(pattern, "");

标签:jquery-validate,javascript
来源: https://codeday.me/bug/20191023/1914247.html