Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Isn';javascript正则表达式是否懒惰?_Javascript_Regex - Fatal编程技术网

Isn';javascript正则表达式是否懒惰?

Isn';javascript正则表达式是否懒惰?,javascript,regex,Javascript,Regex,假设我有输入值: 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 == '**')

假设我有输入值:

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
}
input\u value=input\u value.replace(/(\*\*)([\S\S.]+)(\*\*)/g,replacer\u标记);
函数替换标记(匹配、p1、p2、p3、偏移、字符串){
var pre='';
var post='';
如果(p1='**')
{
pre='';
职位='';
}
返回pre+p2+post
}
它将给我:

foo**bar

但是我想要的是:

foobar**

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

对不起,有拼写错误,我不是以英语为母语的人。
感谢您抽出时间。

使正则表达式不贪婪:

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

使正则表达式不贪婪:

/(\*\*)([\S\s.]+?)(\*\*)/g
               -^-
+
是一个运算符-它告诉引擎尽可能多地匹配,并且仍然允许正则表达式的其余部分匹配。使用
+?
进行非贪婪匹配,意思是“一个或多个-最好尽可能少”。此外,还可以从字符类中排除

([\S\s]+?)
+
是一个运算符-它告诉引擎尽可能多地匹配,并且仍然允许正则表达式的其余部分匹配。使用
+?
进行非贪婪匹配,意思是“一个或多个-最好尽可能少”。此外,还可以从字符类中排除

([\S\s]+?)