JavaScript正则表达式用n * n替换每个nn

时间:2018-03-15 23:19:21

标签: javascript regex iteration

如果我这样做:

@if(isset($notification->data['ad_object']))
    <a href="#">{{$notification->data['user_name']}} posted a new ad  "{{$notification->data['ad_object']}}"</a>
@endif

我得到了这个结果my_string = 'nnn'; my_string = my_string.replace(/nn/g, 'n*n'); return my_string; //n*nn ,但我需要在n*nn的每个场合之间插入星号*。结果应为nn

如果n*n*n,则结果为my_string = 'nnnn',但应为n*nn*n

3 个答案:

答案 0 :(得分:3)

你可以像这样做2次替换

'nnnnnn'.replace(/nn/g,'n*n').replace(/nn/g,'n*n');

示例:

&#13;
&#13;
my_string = 'nnnnnn';
my_string = my_string.replace(/nn/g,'n*n').replace(/nn/g,'n*n');
console.log(my_string);
&#13;
&#13;
&#13;

答案 1 :(得分:3)

您可以使用预测:

&#13;
&#13;
my_string = 'nnnnnnnnnnnnn';
my_string = my_string.replace(/n(?=n)/g, 'n*');
console.log(my_string);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您是否考虑使用前瞻?

匹配度:

n(?=n)

替换为:

n*

演示:regex101

编辑现在它链接到一个正在运行的JS示例,我不能保证它在每个浏览器中都有效。它与之前的lookbehind版本完全对称,但具有前瞻性。非常感谢@JaromandaX指出大多数主流浏览器都不支持lookbehind。