正規表示式test() 總是返回true

admin發表於2019-08-17

很多剛使用正規表示式的朋友可能會遇到這樣一個"奇怪"的現象。

使用test()來檢測字串的時候,返回值總是true,即便被檢測的字串不符合要求。

當然造成這種現象的原因有多種,下面分析一個比較典型的案例。

程式碼例項:

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

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

上面的程式碼中,正規表示式意思是,只要字串str中有匹配的內容就返回true。

程式碼修改如下:

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

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

關於test()方法可以參閱正規表示式 test()一章節。