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

时间:2013-03-06 09:25:41

标签: javascript jquery regex keycode

这是一个小提琴 - http://jsfiddle.net/zuVpx/1/

Javascript代码:

<script>
    function validate(e) {
        var regex = new RegExp("[a-zA-Z0-9]");
        var key = e.keyCode || e.which;
        key = String.fromCharCode(key);

        if(!regex.test(key)) {
            e.returnValue = false;
            if(e.preventDefault) {
                e.preventDefault();
            }
        }
    }
</script>

HTML code:

<input type="text" onkeypress="validate(event)" />

我只想要字符和数字。像退格键,删除键,大写锁定键和箭头键等键应该有效。

提前致谢。

5 个答案:

答案 0 :(得分:5)

在输入中添加id(例如“验证”)并使用:

document.querySelector('#validate').onkeypress = validate;

function validate(e) {
        e = e || event;
        return /[a-z0-9]/i.test(
                   String.fromCharCode(e.charCode || e.keyCode)
               ) || !e.charCode && e.keyCode  < 48;
}

JSFiddle

答案 1 :(得分:2)

尝试

/[-!$%^&*()_+|~=`\\#{}\[\]:";'<>?,.\/]/.test(your_variable)

如果匹配则返回true。

答案 2 :(得分:1)

如何使用额外的if子句呢?有点像...

key.charCodeAt(0) > 32

因此...

function validate(e) {
    var regex = new RegExp("[a-zA-Z0-9]");
    var key = e.keyCode || e.which;
    key = String.fromCharCode(key);

    if(!regex.test(key) && key.charCodeAt(0) > 32) {
        e.returnValue = false;
        if(e.preventDefault) {
            e.preventDefault();
        }
    }
}

答案 3 :(得分:0)

要解决例如左箭头键与key键产生相同%值的问题,您可以使用

function validate(e) {
    e = e || window.event;
    var bad = /[^\sa-z\d]/i,
        key = String.fromCharCode( e.keyCode || e.which );   

    if ( e.which !== 0 && e.charCode !== 0 && bad.test(key) ) {
        e.returnValue = false;
        if ( e.preventDefault ) {
            e.preventDefault();
        }
    } 
 }   

任何可打印字符都应生成非零e.whiche.charCode值 请参阅JavaScript Madness: Keyboard Events

jsFiddle

以上假设空格有效 - 如果不是,只需从否定的字符类中删除\s

答案 4 :(得分:0)

这对我有用。防止用户输入特殊字符(除了Backspace等)

<video>

这是通过将html属性与keydown事件处理程序绑定而触发的

PatternValidation(e){

    if(!e.key.match(/^[a-zA-Z0-9]*$/))
       {
         e.preventDefault();
       }
},