javascript - 如果在单词中找到相同的字符串,则停止 .replace() 替换该字符串

标签 javascript jquery regex replace

例如:有一个页面列出了一些带有颜色的项目。有些被列为海军,有些被列为海军。

$('.ProductDetails a').each(function() {
    var text = $(this).text();
    $(this).text(text.replace("Nav", "Navy")); 
});

将导致所有“Nav”更改为海军 - 太棒了!

但这也会导致“Navy”更改为“Navyy”。 (即,它将海军中的“nav”替换为海军,并在替换“nav”后保留“y”)

有没有办法使用上面的技术来阻止这种情况,或者我必须更改脚本来解决这些双重问题。

我目前的解决方案是在 Nav 之后添加一个空格 $(this).text(text.replace("Nav ", "Navy"));

但这并不理想,因为某些项目后面可能有一个/并且没有空格。

最佳答案

$('.ProductDetails a').each(function() {
    var text = $(this).text();
    $(this).text(text.replace(/^Nav$/g, "Navy")); 
});

或者:

    $(this).text(text.replace(/\sNav\s/g, "Navy")); 

或者:

    $(this).text(text.replace(/\bNav\b/g, "Navy")); 

还有很多其他方法...

请注意,您可以使用此text重载:

$('.ProductDetails a').text(function(index, old) {
    return old.replace(/\sNav\s/g, "Navy");
});​

关于javascript - 如果在单词中找到相同的字符串,则停止 .replace() 替换该字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610232/

相关文章:

javascript - 字母数字和某些特殊字符的正则表达式

c# - 正则表达式拆分字符串但保留分隔符,但不作为单独的元素

javascript - jQuery DataTable - 单击时获取最接近的 td 元素的类

javascript - 将 JSON 数据编辑为 Firebase 格式

javascript - 根据月份突出显示行

javascript - 使用 jQuery、javascript 满足以下要求的图像轮播

javascript - 测试某个单词是否存在于 window.location.href 中的条件

javascript - 为多台服务器设置 DiscordBot 的 channel ID

javascript - IE7 与我的 jQuery 相关的问题 [点击并更改功能]

r - 从字符串中提取匹配模式