在javascript中引用正则表达式文字?为什么不?

时间:2012-08-03 07:53:34

标签: javascript regex string-literals

this answer问题以及许多其他地方,我在javascript中看到了不带引号的字符串。

例如:

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

为什么不应该这样:

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

是正则表达式的某种特殊处理,还是可以声明任何字符串?

4 个答案:

答案 0 :(得分:3)

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

是正则表达式文字,而不是字符串。

答案 1 :(得分:2)

它仅适用于正则表达式,而不适用于字符串。

答案 2 :(得分:2)

因为在JavaScript中,Regex是内置类型,而不是传递给某些解析器的字符串模式,例如在C#或Java中。

这意味着当您编写var regex = /pattern/时,JavaScript会自动将该文字用作正则表达式模式,从而使regex成为RegExp类型的对象。

请参阅:https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

答案 3 :(得分:1)

  

是否对正则表达式进行了某种特殊处理?

是的,正则表达式得到特殊处理。作为MDN points out,有一个内置的JavaScript正则表达式类型,它有自己的文字语法。

  

或者可以像这样声明任何字符串吗?

没有。由于正则表达式是对象而不是字符串,如果您尝试使用正则表达式文字编写字符串,则会得到正则表达式对象,而不是字符串。