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]+?)