在this answer问题以及许多其他地方,我在javascript中看到了不带引号的字符串。
例如:
var re = /\[media id="?(\d+)"?\]/gi;
为什么不应该这样:
var re = '/\[media id="?(\d+)"?\]/gi';
是正则表达式的某种特殊处理,还是可以声明任何字符串?
答案 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正则表达式类型,它有自己的文字语法。
或者可以像这样声明任何字符串吗?
没有。由于正则表达式是对象而不是字符串,如果您尝试使用正则表达式文字编写字符串,则会得到正则表达式对象,而不是字符串。