Javascript正则表达式仅文本框

问题描述:

我能够在c#/ .net中找到解决方案,但不能用于常规web html。如果已经有答案,请告诉我,我会解决问题。Javascript正则表达式仅文本框

如何根据给定的正则表达式(例如[a-zA-Z0-9])创建仅允许某些字符(例如字母数字)的文本框?所以如果用户试图输入其他东西,包括粘贴,它被删除或不允许。

<input type="text" class="alphanumericOnly"> 
+0

你甚至试图找到网络上已经存在的解决方案吗?我确信他们在那里,我不想成为你的打字员,所以去谷歌它,当你有关于详情的问题,回到这里 - 除非你想支付我为你写代码。 – 2009-04-28 20:31:22

的基本功能将是这样:

string = string.replace(/[^a-zA-Z0-9]/g, '') 

这将替换未被[a-zA-Z0-9]描述的任何字符。

现在你既可以把它直接到你的元素声明:

<input type="text" class="alphanumericOnly" onkeyup="this.value=this.value.replace(/[^a-zA-Z0-9]/g, '')"> 

或(如您使用的类提示)分配此行为以每input元素与类alphanumericOnly

var inputElems = document.getElemenstByTagName("input"); 
for (var i=0; i<inputElems.length; i++) { 
    var elem = inputElems[i]; 
    if (elem.nodeName == "INPUT" && /(?:^|\s+)alphanumericOnly(?:\s+|$)/.test(elem.className) { 
     elem.onkeyup = function() { 
      this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
     } 
    } 
} 

但是,使用jQuery或其他JavaScript框架可能会更容易:

$("input.alphanumericOnly").bind("keyup", function(e) { 
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
}); 

假设你有存储为变量input输入...

input.onkeyup(function(e) { 
    this.value = this.value.replace(/\W/g, ''); 
} 

每一个按键后,输入的值将被剥夺的任何非字母数字字符。

如果您在键盘事件中使用.replace方法,输入将会随键入的非字母数字字符一起闪烁,这看起来马虎,并且不符合像我这样的OCD人员。

一个清洁的方法是绑定到按键事件,并否认字符之前,他们甚至到达输入,如下所示:

$('.alphanumericOnly').keypress(function(e){ 
    var key = e.which; 
    return ((key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 95 && key <= 122)); 
}); 

基本键码的名单,可以发现here如果这个特定的设置不适合您的特定需求。