2015-11-07 76 views
1

如何仅替换每场比赛的第一次出现?正则表达式只替换每场比赛的第一次出现

例子。

以下字符串

var toReplace='href="/3" href="/3/a" href="a/3" href="h/3/a/3/b"' 

替换后应该是这样的:

'href="*" href="*/a" href="*" href="*/a/3/b"' 

我用这个表达式

toReplace.replace(/(href=")[^"]*(\/3)/,'$1*') 

但结果是这样的:

'href="*" href="*/a" href="*" href="*/b" ' 

这种情况下的最后一个href变成href="*/b" instead of href="*/a/3/b"

任何想法?

回答

3

[^"]*将尝试匹配所有可能的匹配项。

使用非贪婪/懒惰正则表达式

/(href=")[^"]*?(\/3)/ 
      ^
       | 

Regex Demo

var toReplace = 'href="/3" href="/3/a" href="a/3" href="h/3/a/3/b"'; 
 
var replacedString = toReplace.replace(/(href=")[^"]*?(\/3)/gi, '$1*'); 
 

 
document.write(replacedString);

+0

谢谢!!我太亲近了! –

+0

@MikeAntoniadis欢迎!乐意效劳。 – Tushar

相关问题