我使用以下Javascript生成字符串:/abc/.source
。
通过在控制台中运行此代码,它将返回"abc"
。
现在我想生成一个像"abc/"
这样的字符串。
我尝试/abc\//.source
,但它返回"abc\/"
。
如何在不使用var reg = new RegExp("abc/");reg.source
的情况下实现此目的?
答案 0 :(得分:3)
我认为你误解了 source 属性:
设S是一个等价于P的Pattern形式的String,其中 如下所述,某些字符被转义。 S可能是也可能不是 与P或图案相同;但是,内部程序会 将S评估为模式的结果必须与之相同 由构造对象[[Match]]给出的内部过程 内部财产。
15.10.4.1 new RegExp(pattern, flags)
换句话说,源值必须能够用作正则表达式构造函数中的字符串:
var re = new RegExp( s.source );
在匹配中使用时,结果表达式的行为必须与原始表达式相同。
因此,为了匹配'abc /',所需的模式为abc\/
,则/abc\//.source
必须为abc\/
。
而BTW:
(new RegExp('abc/')).source == 'abc\/';