我正在尝试为名称字段编写正则表达式并阻止所有特殊字符
JS fiddle :https://jsfiddle.net/69mqhzq6/
但是,我的代码似乎忽略了它。有人能告诉我我做错了什么吗?
$('input').on('keypress', function (e) {
var blockSpecialRegex = new RegExp("~`!@#$%^&()_={}\[\]\:;,.\/<>/-+/?");
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
console.log(key)
if(blockSpecialRegex.test(key) || $.isNumeric(key)){
e.preventDefault();
return false;
}
});
最佳答案
您只是枚举了特殊字符,而没有创建借助 [...]
定义的字符类。
我建议使用正则表达式文字,其字符类与其中定义的任何符号相匹配:
var blockSpecialRegex = /[~`!@#$%^&()_={}[\]:;,.<>+\/?-]/;
请注意,-
应位于字符类的开头/结尾,以表示文字 -
符号。里面的]
必须转义,但[
不必转义。 /
必须转义,因为它是正则表达式分隔符。
JS代码:
$('input').on('keypress', function (e) {
var blockSpecialRegex = /[~`!@#$%^&()_={}[\]:;,.<>+\/?-]/;
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
console.log(key)
if(blockSpecialRegex.test(key) || $.isNumeric(key)){
e.preventDefault();
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text">
关于javascript - 正则表达式阻止所有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45000316/