为什么正则表达式匹配在nodejs中返回超过正常值?

时间:2014-06-25 16:27:17

标签: regex node.js

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

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

它返回此

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

我希望它返回前三个项目,其他值来自哪里?

1 个答案:

答案 0 :(得分:4)

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

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

  

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