Javascript Regex Only Textbox

Sea*_*ney 3 javascript regex textbox

我能够在c#/ .net中找到解决方案,但不能用于常规的web html.如果已经有答案让我知道,我会提出问题.

如何根据给定的正则表达式创建一个只允许某些字符(例如字母数字)的文本框(例如[a-zA-Z0-9])?因此,如果用户尝试输入任何其他内容,则粘贴包含,将被删除或不允许.

<input type="text" class="alphanumericOnly">
Run Code Online (Sandbox Code Playgroud)

Gum*_*mbo 5

基本功能是这样的:

string = string.replace(/[^a-zA-Z0-9]/g, '')
Run Code Online (Sandbox Code Playgroud)

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

现在您可以直接将它放入元素声明中:

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

或者(当您使用类提示时)将此行为分配给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, '');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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