Isn't javascript regex lazy?

Isn't javascript regex lazy?

本文关键字:regex lazy javascript Isn      更新时间:2023-09-26

假设我有输入值:

var input_value = "** foo ** bar **";

然后我运行这个:

input_value = input_value.replace(/('*'*)(['S's.]+)('*'*)/g,replacer_markup);
function replacer_markup(match, p1, p2, p3, offset, string) {
  var pre = '';
  var post = '';
  if (p1 == '**')
  {
    pre = '<b>';
    post = '</b>';
  }
  return pre+p2+post
}

它会给我:

foo**bar

但相反,我想拥有:

foobar**

我希望得到尽可能小的结果。我怎样才能做到这一点?

很抱歉有拼写错误,我不是母语人士。谢谢你抽出时间。

+贪婪运算符—它告诉引擎尽可能多地匹配,并且仍然允许正则表达式的剩余部分匹配。将+?用于非贪婪匹配,意思是"一个或多个——最好尽可能少"。此外,还可以从字符类中排除.

(['S's]+?)

使正则表达式非贪婪:

/('*'*)(['S's.]+?)('*'*)/g
               -^-