javascript 正则表达式组为什么我得到前导空白?

javascript regex group why do I get leading blanks?

当将“产品名称 cat1”与此正则表达式匹配时,我得到带有前导空格的“产品名称”,当然我可以 trim in javascript 但是有没有办法修改正则表达式不抓住那个空白?

(product)((\s+)(.(?!cat1|cat2))+)

您可以使用

(product)(\s+)((?:(?!cat1|cat2).)+)

参见regex demo

注:

  • 千锤百炼贪心令牌已修复,详见
  • 捕获组 2 左边界移动到 (\s+) 之后。

另一种看待它的方法是在单个捕获组中使用非贪婪量词 (.*?),如果您只对 product name[=14= 感兴趣,则匹配 cat1 或 cat2 ]

\bproduct\s+(.*?)\s+cat[12]\b

Regex demo