正则表达式仅替换每次匹配的第一次出现

时间:2015-11-07 15:48:22

标签: javascript jquery regex

如何只替换每场比赛的第一次出现?

实施例

以下字符串

AbstractAuthenticationProcessingFilter
替换后

应该像:

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="*" href="*/a" href="*" href="*/b" '

有什么想法吗?

1 个答案:

答案 0 :(得分: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);