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

标签 javascript jquery regex

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

示例。

以下字符串

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)/
              ^
              |

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);

关于javascript - 正则表达式仅替换每个匹配项的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33584583/

相关文章:

jquery - 如何禁用 jQuery 标签上的单击事件?

javascript - jQuery Ajax 加载许多相同的东西

javascript - 检查元素是否包含字符串,并且除了字符串之外什么都没有 - 也许是正则表达式

javascript - 如何使用 Angular 将逗号分隔的字符串转换为 json 对象类型

javascript - Fire Event before 'focus' kicks in/Fire Event before keyboard appears on iOS

javascript - Ajax 加载程序图像不工作

.net - 正则表达式仅匹配整个单词

c# - 在aspx.cs中创建onclick函数的c#代码

jquery - 林肯电影网站页面 slider

regex - 为什么在 Ruby 中 Regexp 对象被认为是 "falsy"?