2012-08-03 62 views
1

this answer到一個問題,以及很多其他地方,我看到JavaScript中的未加引號的字符串。在JavaScript中引用正則表達式文字?爲什麼不?

例如:

var re = /\[media id="?(\d+)"?\]/gi; 

爲什麼不應該它改爲:

var re = '/\[media id="?(\d+)"?\]/gi'; 

它是某種正則表達式的特殊處理,或者可以在任意的字符串來聲明這樣呢?

+0

謝謝大家。我已經提出或接受了所有答案。 upvoted關於w3schools的評論。 :-) – MattBianco 2012-08-03 08:21:31

回答

1

它是某種正則表達式的特殊處理?

是的,正則表達式得到特殊處理。由於MDN points out,有一個內置的JavaScript正則表達式類型,它有自己的文字語法。

或者是否可以聲明任何字符串?

號由於正則表達式是對象和非字符串,如果你試圖寫一個正則表達式字符串文字,你會得到一個正則表達式對象,而不是字符串。

3
var re = /\[media id="?(\d+)"?\]/gi; 

是正則表達式字面值,不是字符串。

2

它只適用於正則表達式,不適用於字符串。

2

因爲在JavaScript中,Regex是一個內置類型,而不是傳遞給某個解析器的字符串模式,例如,在C#或Java中。

這意味着當您編寫var regex = /pattern/時,JavaScript會自動使用該文字作爲正則表達式模式,使regex成爲RegExp類型的對象。

請參見:https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

+2

[MDN](https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions)比[w3fools](http://w3fools.com)要好得多,w3schools無所事事與真正的W3C,他們只是谷歌轟炸他們的方式到頂部。 – 2012-08-03 08:04:32

+0

哇,我沒有意識到這一點。我的錯。感謝您的提示,從現在開始我會記住它。 – 2012-08-03 08:31:59

相關問題