2015-07-12 110 views
2

我一直在嘗試使用JavaScript獲得不允許使用符號的正則表達式,但是允許使用連字符和下劃線,但它只是不起作用,這裏是我嘗試過的:正則表達式不允許除符號和下劃線以外的符號

function checkUsername(username) 
    { 
     username_lbl = document.getElementById('<%= username_lbl.ClientID %>'); 
     register_btn = document.getElementById('<%= register_btn.ClientID %>'); 
     if (username.match("?[[email protected]#$%^&*()+=[{]};:<>|./?.]")) 
     { 
      username_lbl.innerHTML = 'Cannot contain symbols'; 
      register_btn.disabled = true; 
      username_lbl.style.color = "red"; 
     } 
    } 

有沒有人明白我在做什麼錯了?

+0

也許你的意思是'if(username.match(/ [-_] /))'? –

回答

2

由於許多符號(例如?,[,])被用作正則表達符號。你需要或者逃脫它們,或者這樣做:

username.match("[^\\w-_]"); 

[^]表示不匹配字符集。

\ W意味着字字符並[a-ZA-Z0-9]

EdBallot編輯:固定錯字的正則表達式(是[^\\w-_],改爲[^\w\-_]

作者編輯:它應該是"[^\\w-_]",因爲它是雙引號,應該逃脫了,或者你可以單引號或使其正則表達式

username.match(/[^\w-_]/) 
+0

這不起作用? – mogorilla

+0

正則表達式中有一個錯字。它應該是'[^ \ w \ -_]' –

+0

@EdBallot否你的編輯會破壞代碼 – texasbruce

0

只要使用

var username = "_Fred-Fred_"; 
 
if (/[^-_a-zA-Z]/.test(username)) { 
 
    alert("Wrong username: " + username); 
 
} 
 
username = "!_Fred-Fred_"; 
 
if (/[^-_a-zA-Z]/.test(username)) { 
 
    alert("Wrong username: " + username); 
 
}

[^-_a-zA-Z]匹配任何不是一個字母,連字符或下劃線。如果發現其他東西,則測試失敗。

+0

如果您需要匹配任何Unicode字母,請告訴我。 –

相關問題