2012-08-03 27 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

相关问题