替换字符串中的所有子字符串

时间:2012-02-09 15:12:00

标签: javascript jquery regex

假设我有以下字符串:

var str = "The quick brown fox jumped over the lazy dog and fell into St-John's river";

我如何(使用jQuery或Javascript)替换子串(“the”,“over”,“and”,“into”,“s”),在该字符串中,假设是下划线,没有必须多次调用str.replace(“”,“”)?

注意:我必须找出我想要替换的子字符串是否被空格包围。

谢谢

4 个答案:

答案 0 :(得分:8)

尝试以下方法:

var newString = str.replace(/\b(the|over|and|into)\b/gi, '_');
// gives the output:
// _ quick brown fox jumped _ _ lazy dog _ fell _ St-John's river

\b匹配单词边界,|是'或',所以它会匹配'''但它与'theme'中的字符不匹配。

/gi标志为g表示全局(因此它将替换所有匹配的出现。i用于不区分大小写的匹配,因此它将匹配the,{{ 1}},tHe ...

答案 1 :(得分:1)

使用此功能。

str = str.replace(/\b(the|over|and|into)\b/gi, '_');

答案 2 :(得分:0)

使用带有g标志的正则表达式,它将替换所有出现次数:

var str = "The quick brown fox jumped over the lazy dog and fell into the river";
str = str.replace(/\b(the|over|and|into)\b/g, "_")
alert(str)  // The quick brown fox jumped _ _ lazy dog _ fell _ _ river

答案 3 :(得分:0)

使用正则表达式。

str.replace(/(?:the|over|and|into)/g, '_');

?:并非绝对必要,但是通过不捕获匹配使命令稍微有效。全局匹配需要g标志,以便替换字符串中的所有出现。

我不确定你的意思是必须找出子串是否被空格包围。也许你的意思是你只想替换单个单词,并保持空白完好无损?如果是这样,请使用此功能。

str.replace(/(\s+)(?:the|over|and|into)(\s+)/g, '$1_$2');