阻止特殊字符但允许空格

时间:2016-04-14 13:41:12

标签: javascript regex

我需要屏蔽输入中的特殊字符,但我在Chrome中的代码不允许在单词之间输入空格,在Firefox中正常工作。

var regex = new RegExp("^[0-9a-zA-Z\b]+$");
var key = String.fromCharCode(!event.charCode ? event.which: event.charCode);
 if (!regex.test(key)) 
 {
     event.preventDefault();
     return false;
 }

3 个答案:

答案 0 :(得分:3)

您不能只将空间添加到RegExp吗?

代码将变成类似:

var regex = new RegExp("^[0-9a-zA-Z \b]+$");
var key = String.fromCharCode(!event.charCode ? event.which: event.charCode);
if (!regex.test(key)) 
{
    event.preventDefault();
    return false;
} 

答案 1 :(得分:0)

除了检查每个输入值之外的另一种方法是在输入整个字符串后检查值。

document.getElementById("ok").onclick = function() {
  var regex = new RegExp("^[0-9a-zA-Z\b ]+$");
  var str = document.getElementById("demo").value;
  if (regex.exec(str) == null) {
    alert("Not good.");
    document.getElementById("demo").value = null;
    return false;
  } else {
    alert("Good");
    // Do whatever you want.
  }
}
<input type="text" id="demo">
<input type="button" id="ok" value="Validate">

答案 2 :(得分:0)

我在尝试在“名称”字段中输入时发现了此方法。我想允许字母和空格,但不允许数字和特殊字符。这就是我所做的。

try {
 if (window.event) {
  var charCode = window.event.keyCode;
}
 else if (e) {
  var charCode = e.which;
}
 else { return true; }
  if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 
   123 ) || (charCode > 31 && charCode < 33))
   return true;
 else
   return false;
}
catch (err) {
 alert(err.Description);
}
}

空间有charCode 32,我添加了一个条件,允许值大于31且小于33的字符。我试过=和!=但是没有帮助。 这段代码对我来说很好。 快乐的编码。