1

这个问题的答案以及许多其他地方,我在 javascript 中看到了未引用的字符串。

例如:

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

为什么不应该是:

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

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

4

4 回答 4

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

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

于 2012-08-03T07:55:37.943 回答
2

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

于 2012-08-03T07:56:04.243 回答
2

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

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

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

于 2012-08-03T07:57:19.177 回答
1

是对正则表达式的某种特殊处理吗?

是的,正则表达式得到特殊处理。正如MDN 指出的那样,有一个内置的 JavaScript 正则表达式类型,它有自己的文字语法。

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

不,因为正则表达式是对象而不是字符串,所以如果你尝试用正则表达式文字编写字符串,你会得到一个正则表达式对象,而不是字符串。

于 2012-08-03T07:58:37.610 回答