javascript - 正则表达式阻止所有特殊字符

标签 javascript regex

我正在尝试为名称字段编写正则表达式并阻止所有特殊字符

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/

相关文章:

javascript - 工厂中的 AngularJS 持久对象

javascript - Shadow DOM 外部的事件监听器不会绑定(bind)到 Shadow DOM 内部的元素

javascript - 单击特定按钮时如何显示 div,

Javascript 循环问题

python - 如何在 Python 上使用正则表达式对文本进行标记而不忽略括号

javascript - 正则表达式 - 如何匹配两个或四个相同的字母而不是三个

Javascript camel case split for json 结果

javascript - 如何在 Google Chrome 应用程序中使用 <webview> 允许弹出窗口和重定向?

javascript - Javascript 替代方案中的正则表达式 Lookbehind

c# - 正则表达式删除尾随空格和多个空行