为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript中带有捕获组的RegExp对象和正则字面量匹配为何不一致?

JavaScript中带有捕获组的RegExp对象和正则字面量匹配为何不一致?

浮云间 2018-10-18 14:13:33
在网上查过资料,说RegExp对象和正则表达式的字面量(literals)是等价的,不同的是前者是预编译的。如果这样的话,按理说它们匹配的结果应该是完全一致的。可是在正则表达式中加入捕获组(capturing parentheses)时,发现两者匹配的结果不一致。如下面的代码所示:var names = 'name name-57'; names.replace(/.*name-(\d+).*/, '$1') // [1]names.replace(new RegExp('.*name-(\d+).*'), '$1') // [2][1]返回的是"57",而[2]返回的是"name name-57"以上运行结果是在Chrome 55的控制台中得到的。我猜测可能和预编译对象和捕获组间的关系有关,但是并未找到解释原因的资料。请问这种不一致的情况是什么原因呢?如果我想用RegExp对象来得到与[1]相同的结果应该如何写呢?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 530 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信