代码之家  ›  专栏  ›  技术社区  ›  joao-m-santos

仅匹配第一次发生的正则表达式

  •  0
  • joao-m-santos  · 技术社区  · 7 年前

    我正在尝试使用以下正则表达式匹配字符串上的所有@提及和#哈希标记:

    (^|\s)([#@][a-z\d-]+)
    

    根据regex101。com,因为+存在,所以它应该匹配所有发生的事件

    “+”量词–在一次和无限次之间匹配,尽可能多地匹配,根据需要返回

    但当我在一个具有多个发生率的字符串中运行它时,它只匹配第一个。

    发生什么事?

    感谢您的关注。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Jeremy Thille    7 年前

    添加 g (全局)标志位于多个匹配的末尾。

    /(^|\s)([#@][a-z\d-]+)/g
    
        2
  •  1
  •   Rupesh Bramhankar    7 年前

    ^ 此符号定义字符串的开头。这就是为什么它只与第一个字符串匹配。

    使用 /[@#]\w+/ 正则表达式。