簡體   English   中英

限制特殊字符的正則表達式

[英]Regular Expression to restrict special characters

我的表單中有一個地址字段,我想限制
* | \\ " : < > [ ] { } \\ ( ) '' ; @ & $
我試過

var nospecial=/^[^* | \ " : < > [ ] { } ` \ ( ) '' ; @ & $]+$/;
            if(address.match(nospecial)){
                alert('Special characters like * | \ " : < > [ ] { } ` \ ( ) \'\' ; @ & $ are not allowed');
                return false;

但它不起作用。 請告訴我我錯過了什么?

您需要轉義字符類中的結束括號(以及反斜杠)。 您也不需要所有空格:

var nospecial=/^[^*|\":<>[\]{}`\\()';@&$]+$/;

我擺脫了你所有的空間; 如果您還想限制空格字符,請重新添加一個空格。

編輯正如@fab 在評論中指出的那樣,反轉正則表達式的意義會更有效:

var specials=/[*|\":<>[\]{}`\\()';@&$]/;

並測試是否存在特殊字符(而不是不存在):

if (specials.test(address)) { /* bad address */ }

/[$&+,:;=?[]@#|{}'<>.^*()%!-/]/

下面一個不應該允許輸入這些字符,它會返回空格

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

使用以下功能

function checkSpcialChar(event){
    if(!((event.keyCode >= 65) && (event.keyCode <= 90) || (event.keyCode >= 97) && (event.keyCode <= 122) || (event.keyCode >= 48) && (event.keyCode <= 57))){
        event.returnValue = false;
        return;
    }
    event.returnValue = true;
}

使用這個這將解決問題

字符串模式 = r"[!-/:-@[-`{-~]";

RegExp regExp = RegExp(patttern);

暫無
暫無

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

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