為什麼正規表示式的test()函式總是返回true

admin發表於2017-02-25
可能很多剛使用正規表示式的朋友會遇到這樣一個"奇怪"的現象,那就是使用test()函式來檢測一個字串的時候,返回值總是true,命名被檢測的字串不符合要求,當然造成這種現象的原因有多種,下面就來簡單介紹一個比較典型的情況。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var reg=/[a-zA-Z0-9]{1,6}/;
var str="zdlqust451210788";
console.log(reg.test(str));

正規表示式的本意是為了匹配1-6位字母或者數字組成的字串,很明顯字str字串的長度已經超過了6,但是返回值還是true。

在上面的程式碼中,表達意思是,只要字串str中有匹配的內容就返回true,程式碼修改如下:

[JavaScript] 純文字檢視 複製程式碼
var reg=/^[a-zA-Z0-9]{1,6}$/;
var str="zdlqust451210788";
console.log(reg.test(str));

上面的程式碼做一下限制就可以實現正確驗證了。


相關文章