一尘不染

为什么正则表达式匹配在nodejs中返回比正常更多的返回值?

node.js

如果我在节点repl中执行此指令

"hello".match(/(\w+)(.*)/)

它返回

[ 'hello',
  'hello',
  '',
  index: 0,
  input: 'hello' ]

我希望它返回前三个项目,其他值从何而来?


阅读 251

收藏
2020-07-07

共1个答案

一尘不染

  • 数组中的第一项是整个正则表达式匹配项(“组0”)。那hello当然是。
  • 第二项是第一个捕获组的match的内容(\w+)。这是hello又响了。
  • 第三项是第二个捕获组的match的内容(.*)。那是之后的空字符串hello
  • index 是比赛开始的位置-这是字符串的第一个字符。
  • input向您显示执行regex的字符串,即hello

很难找到关于此的文档(至少对我而言),但这是MSDN上描述正则表达式匹配返回的对象的内容:http : //msdn.microsoft.com/zh-
cn/library/ie/7df7sf4x( v = vs.94).aspx:

如果未设置全局标志,则match方法返回的数组具有两个属性,inputindex。该input属性包含整个搜索的字符串。该index属性包含匹配的子字符串在完整搜索的字符串中的位置。

2020-07-07