JQuery - 删除不匹配regEx的字符

JQu*_*ner 3 javascript jquery-validate

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

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

var pattern = /^[a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;
Run Code Online (Sandbox Code Playgroud)

如果用户键入除此之外的任何其他内容,则必须用""替换.

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

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

Mar*_*ers 5

通过在开始方括号后面立即写一个否定字符类:^

/[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g
Run Code Online (Sandbox Code Playgroud)

这里^有一个特殊的含义,它与正则表达式中的正常含义不同(通常它匹配行的开头).

所以你纠正的代码看起来像这样:

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

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

jVal = jVal.replace(pattern, "");
Run Code Online (Sandbox Code Playgroud)