例如:有一个页面列出了一些带颜色的项目。有些被列为Nav,有些被列为海军。
$('.ProductDetails a').each(function() {
var text = $(this).text();
$(this).text(text.replace("Nav", "Navy"));
});
将导致所有'导航'变为海军 - 太棒了!
但它也会导致'海军'改为Navyy。 (即它将海军中的'nav'替换为海军,并在'nav'被替换后留下'y')
有没有办法使用上面的技术来阻止这种情况,或者我必须更改脚本来解释这些翻倍。
我目前的解决方案是在导航$(this).text(text.replace("Nav ", "Navy"));
但这并不理想,因为有些物品可能有/后面没有空间。
答案 0 :(得分:6)
$('.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");
});
答案 1 :(得分:1)
你可以像这样使用正则表达式替换:
$(this).text(text.replace(/\snav[\s/]/g,"navy");
表示:
replace [whitespace]nav[whitespace or "/"] to "navy"
答案 2 :(得分:1)
您想要使用能够识别单词边界的正则表达式:
text.replace(/\bnav\b/, 'Navy')