【问题标题】:Why does a regex match return more than normal in nodejs?为什么正则表达式匹配在 nodejs 中返回的比正常多?
【发布时间】:2014-06-25 16:27:16
【问题描述】:

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

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

返回这个

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

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

【问题讨论】:

    标签: regex node.js


    【解决方案1】:
    • 数组中的第一项是整个正则表达式匹配(“组 0”)。那当然是hello。
    • 第二项是第一个捕获组匹配(\w+)的内容。又是hello。
    • 第三项是第二个捕获组匹配(.*)的内容。那是hello之后的空字符串。
    • index 是匹配开始的位置 - 是字符串的第一个字符。
    • input 显示执行正则表达式的字符串 - 即 hello。

    很难找到这方面的文档(至少对我而言),但这里有一些来自 MSDN 的内容,描述了正则表达式匹配返回的对象:http://msdn.microsoft.com/en-us/library/ie/7df7sf4x(v=vs.94).aspx:

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

    【讨论】:

    • 好的,我不知道为什么会出现索引和输入属性,我只是在期待匹配项。
    • MSDN 是一个丛林......很好的解释,+1 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2018-08-09
    相关资源
    最近更新 更多