【问题标题】:Regex JavaScript overlapping matches正则表达式 JavaScript 重叠匹配
【发布时间】:2015-06-19 15:33:05
【问题描述】:

如果我有一个像fooba 这样的字符串,并且我想同时捕获foofooba 我该怎么办?如果我使用foo|fooba,它只包含第一个foo 而不是fooba

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    对两种模式都使用前瞻(零宽度断言):

    (?=(foo))(?=(fooba))
    

    RegEx Demo

    【讨论】:

    • 我不能使用 match ,只能使用 exec 函数
    • 即使使用exec 按钮,您也可以以同样的方式使用捕获的组。
    • 使用exec 你可以这样做:var m = /(?=(foo))(?=(fooba))/.exec('fooba'); 然后使用m[1]m[2]
    • 谢谢,m[0] 中有什么?我有一个空字符串。
    • m[0] 应该是完整的匹配,因为我们这里除了前瞻之外什么都没有,因此m[0] 是空的。如果您将正则表达式更改为/(?=(foo))(?=(fooba)).*/,那么您将在m[0] 中获得fooba
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 2010-09-24
    • 1970-01-01
    • 2021-02-16
    • 2013-04-05
    相关资源
    最近更新 更多