2012-10-10 86 views
1

我對使用命名測試(3號線)功能的好奇之下:regex.test():它來自哪裏?

var pattern = /[1-9][1-9]{5}/; 
var str = 'this is 248760!'; 
alert(pattern.test(str)); 

我看到這個劇本的一本書,不存在test(str)函數的定義。

它爲什麼會提示true而不是給出錯誤?

+4

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/test – j08691

+0

我認爲這個問題需要一個更好的主題。 –

回答

3

pattern是正則表達式對象

/[1-9][1-9]{5}/.test("foo"); // valid javascript 

正則表達式對象提供許多構件的功能,如test(...)toString()僅舉幾...

/[1-9][1-9]{5}/.toString(); // "/[1-9][1-9]{5}/" 

/的在開始和結束對於以下內容來說是一種簡短的手段:

new RegExp("[1-9][1-9]{5}"); // /[1-9][1-9]{5}/ 
3

pattern變量實際上是正則表達式對象(因爲/之前和之後的字符),而正則表達式的成員函數test(...)是作爲JavaScript的一部分內置的。