如何只替换每场比赛中第一次出现的位置?
示例。
以下字符串
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"而不是 href="*/a/3/b"
有什么想法吗?
最佳答案
[^"]*
将尝试匹配所有可能的匹配项。
使用非贪婪/惰性正则表达式
/(href=")[^"]*?(\/3)/
^
|
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);
关于javascript - 正则表达式仅替换每个匹配项的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33584583/