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