1

我正在使用以下 Javascript 生成字符串:/abc/.source. 通过在控制台中运行此代码,它将返回"abc".

现在我想生成一个像"abc/".

我试过/abc\//.source但它返回"abc\/"

我怎样才能在不使用的情况下实现这一目标var reg = new RegExp("abc/");reg.source

4

1 回答 1

3

我认为您误解了属性:

令 S 为等价于 P 的 Pattern 形式的字符串,其中某些字符被转义,如下所述。S可能与P或pattern相同也可能不同;但是,将 S 评估为 Pattern 所产生的内部过程的行为必须与构造对象的 [[Match]] 内部属性给出的内部过程相同。

15.10.4.1 新的正则表达式(模式、标志)

换句话说,源值必须能够用作正则表达式构造函数中的字符串:

var re = new RegExp( s.source );

match 中使用时,结果表达式的行为必须与原始表达式相同。

因此,如果要匹配 'abc/',则所需的模式abc\/必须/abc\//.sourceabc\/.

顺便说一句:

(new RegExp('abc/')).source == 'abc\/';
于 2013-10-10T04:26:04.230 回答