在this answer到一個問題,以及很多其他地方,我看到JavaScript中的未加引號的字符串。在JavaScript中引用正則表達式文字?爲什麼不?
例如:
var re = /\[media id="?(\d+)"?\]/gi;
爲什麼不應該它改爲:
var re = '/\[media id="?(\d+)"?\]/gi';
它是某種正則表達式的特殊處理,或者可以在任意的字符串來聲明這樣呢?
在this answer到一個問題,以及很多其他地方,我看到JavaScript中的未加引號的字符串。在JavaScript中引用正則表達式文字?爲什麼不?
例如:
var re = /\[media id="?(\d+)"?\]/gi;
爲什麼不應該它改爲:
var re = '/\[media id="?(\d+)"?\]/gi';
它是某種正則表達式的特殊處理,或者可以在任意的字符串來聲明這樣呢?
它是某種正則表達式的特殊處理?
是的,正則表達式得到特殊處理。由於MDN points out,有一個內置的JavaScript正則表達式類型,它有自己的文字語法。
或者是否可以聲明任何字符串?
號由於正則表達式是對象和非字符串,如果你試圖寫一個正則表達式字符串文字,你會得到一個正則表達式對象,而不是字符串。
var re = /\[media id="?(\d+)"?\]/gi;
是正則表達式字面值,不是字符串。
它只適用於正則表達式,不適用於字符串。
因爲在JavaScript中,Regex是一個內置類型,而不是傳遞給某個解析器的字符串模式,例如,在C#或Java中。
這意味着當您編寫var regex = /pattern/
時,JavaScript會自動使用該文字作爲正則表達式模式,使regex
成爲RegExp
類型的對象。
請參見:https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions
[MDN](https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions)比[w3fools](http://w3fools.com)要好得多,w3schools無所事事與真正的W3C,他們只是谷歌轟炸他們的方式到頂部。 – 2012-08-03 08:04:32
哇,我沒有意識到這一點。我的錯。感謝您的提示,從現在開始我會記住它。 – 2012-08-03 08:31:59
謝謝大家。我已經提出或接受了所有答案。 upvoted關於w3schools的評論。 :-) – MattBianco 2012-08-03 08:21:31