这是我正在使用的功能:
function replaceH1s() {
$("h1").each(function(){
h1name = $(this).text();
stuff = h1name.toLowerCase().replace(' ','-');
$(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
})
}
我无法弄清楚为什么这个函数用连字符替换h1name字符串中的第一个空格,而不是任何后续的空格。我尝试了转义和转义(然后用连字符替换%20,但这也做了同样的事情)。我为catchall空格尝试了正则表达式,并且做了同样的事情。我觉得我在这里看不到一些超级根本的东西。
答案 0 :(得分:4)
您需要指定全局正则表达式。否则它只匹配第一次出现。
// regular expression
function replaceH1s() {
$("h1").each(function(){
h1name = $(this).text();
stuff = h1name.toLowerCase().replace(/\s+/g, '-'); // matches all whitespace
// use / /g to match a single space
$(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
})
}
// firefox only
function replaceH1s() {
$("h1").each(function(){
h1name = $(this).text();
stuff = h1name.toLowerCase().replace(' ', '-', 'g');
$(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
})
}
答案 1 :(得分:1)
stuff = h1name.toLowerCase().replace(/ /g, '-');
答案 2 :(得分:0)
replace函数旨在替换您要搜索的字符串的第一个实例。如果要替换所有实例,那么使用正则表达式会更好。
请查看this page了解详情。
答案 3 :(得分:0)
如果你试图用 - 你的关闭但不完全替换所有空格
JavaScript中的replace函数只替换匹配和退出的第一个值。这是一个replaceAll函数。
stuff = h1name.toLowerCase().replace(' ' + /g, '-');
alert(stuff); //make sure this is what you want
/ g指定全部替换。