javascript的正規表示式的test()方法簡單介紹

antzone發表於2017-03-21

本章節對於test()的基本用法不做介紹,具體可以參閱正規表示式test()函式一章節。

下面只對一個需要特別注意的地方進行一下簡單的介紹,否則可能會出現意想不到的結果。

先看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
var reg=/\d/;
console.log(reg.test("5"))

上面的程式碼可以輸出true,這應該沒有任何的疑問,再來看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
var reg=/\d/g;
console.log(reg.test("5"))

在上面的程式碼中,將正規表示式修改為全域性匹配,輸出值同樣是true,這個結果也是可以接受的。

再來看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
var reg=/\d/g;
console.log(reg.test("5"));
console.log(reg.test("5"));
console.log(reg.test("5"));
console.log(reg.test("5"));

上面的程式碼輸出結果就有點"奇怪",並不都是true,下面就介紹一下之所以出現此問題的原因。

這是因為RegExp物件具有一個名為lastIndex的屬性,用來規定下一次匹配開始的位置,一定要注意,這裡是指的是下一次匹配開始的,而不是匹配成功的位置。在預設狀態下,lastIndex屬性值是0,當第一此匹配成功之後,lastIndex變成1,當然第二次匹配就會失敗,然後lastIndex又會被重置為0,那麼第三次匹配又會成功,以此類推。

關於lastIndex屬性可以參閱js正規表示式的lastIndex屬性用法介紹一章節。

相關文章