2014-01-17 46 views
1

我想通過客戶端的valdiation驗證我的表單中的用戶名字段,我遇到了一些麻煩。正則表達式檢查一個字符串是在兩個長度之間,只有字母和數字

我試圖使用匹配他們對正則表達式,這似乎爲我的密碼強度/匹配工作。但是,當我嘗試將正則表達式更改爲適合用戶名的正則表達式時,它不起作用。

這是正常表達式,它會檢查長度是否至少爲6個字符長。

var okRegex = new RegExp("(?=.{6,}).*", "g"); 

這是其他的正則表達式不工作:

var okRegex = new RegExp("/^[a-z0-9_-]{3,16}$/"); 

如何編寫執行驗證用戶名正則表達式? (它有一定的長度,只有字母和數字)

+0

你試圖執行的用戶名規則是什麼? – rusmus

+0

好幫助正則表達式工具:http://regex101.com/r/bB5aL3 – caramba

+0

'if(/^[a-z0-9 _-] {3,16} $ /。test(userNameVar)){// username is好!} – Obversity

回答

4

你在混合正則表達式文字和RegExp構造函數。使用一個或另一個,但不能同時:

okRegex = new RegExp('^[a-z0-9_-]{3,16}$'); 

okRegex = /^[a-z0-9_-]{3,16}$/; 
+0

排序,謝謝! – user3112518

+0

值得一提的是,如果你正在創建動態RegExps,那麼使用'new RegExp()'並傳入參數,因爲硬編碼使用'/ regexp /'更快。 –

+0

注意到了,謝謝。 – user3112518

1

由於@zzzzBow回答您使用正則表達式的兩種方法混合起來。選擇一個或另一個。現在,打破:

^匹配字符串的開頭(這意味着該字符串必須以任何後面開頭)。

[a-z0-9_-]匹配字符a-z,A-Z,數字0-9 _(下劃線)和 - (破折號/連字符)。

{3,16}表明從上述字符類中必須有3-16次出現。

$匹配字符串的結尾,所以不能是16個字符之後的任何內容。

希望有所幫助。

+0

啊,這太好了,謝謝你的分解。 – user3112518

+0

我現在遇到了電子郵件問題..我只用了一個文字..我想'var okRegex = new RegExp('^ [A-Z0-9 ._%+ - ] + @ [A-Z0 -9 .-] + \ [AZ] {2,4} $');' – user3112518

相關問題