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

时间:2017-07-09 19:41:43

标签: javascript regex

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

JS小提琴:https://jsfiddle.net/69mqhzq6/

但是,我的代码似乎忽略了它。有人能说出我做错了吗?

Marshal.FreeGlobal

3 个答案:

答案 0 :(得分:1)

您只需枚举特殊字符,而无需创建在edit_project_task_path(@project, @task) 的帮助下定义的字符类。

我建议使用正则表达式文字,其字符类与其中定义的任何符号相匹配:

[...]

请注意,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;
  }
  });

答案 1 :(得分:1)

为什么不使用正则表达式只允许使用字母,数字和空格(如果需要) ^ [A-Za-z0-9] * $

答案 2 :(得分:0)

使用构造函数时,正常的字符串转义规则(在字符串中包含\的特殊字符前面)是必要的。

所以你需要这样做:

var blockSpecialRegex = new RegExp("[~`!@#$%^&()_={}\\[\\]\\:;,\\.\\/<>\\\\*\\-+\\?]");

See RegExp - Javascript