JS 正则表达式关于RegExp.$x 的疑问

var sToMatch = 'Important word is the last one.'
var reLastWord = /(\w+)\.$/
reLastWord.test(sToMatch)
console.log(RegExp.$1)

上面这段代码的结果为什么是'one' 而不是'one.'? 这是JS的bug还是?
从执行情况来看,应该是匹配到了'one.', 但RegExp的变量却没有把.这个符号保存在结果里.

阅读 2.5k
3 个回答

$是捕获括号内匹配的
/(\w+)\.$/ 匹配到 one.,其中 one.是整个匹配到的 one()匹配到的

/(\w+\.)$/

这样就好了,正则里面的()代表是一个元组,你的$1获取的是()里面的元素,所以你只要把\.加到()里面就好了

这个$1是对应正则里面的第一个集合(),也就是括号里面的部分,$2就是第二个集合(),你的\.在集合括号外面。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏