簡體   English   中英

javascript正則表達式禁止所有特殊字符

[英]javascript regex to disallow all special characters

這是一個開始的小提琴 - 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代碼:

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

我只想要字符和數字。 退格鍵、刪除鍵、大寫鎖定鍵和箭頭鍵等鍵應該可以工作。

提前致謝。

在輸入中添加一個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

嘗試

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

如果匹配,則返回 true。

只使用一個額外的 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();
        }
    }
}

要克服,例如左箭頭鍵產生相同的問題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 瘋狂:鍵盤事件

js小提琴

以上假設空格有效 - 如果不是,只需從否定字符類中刪除\\s

這對我有用。 防止用戶輸入特殊字符(退格等除外)

PatternValidation(e){

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

這是通過將 html 屬性與 keydown 事件處理程序綁定來觸發的

<input type="text" onkeydown="PatternValidation($event)">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM