假设我有以下字符串:
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(“”,“”)?
注意:我必须找出我想要替换的子字符串是否被空格包围。
谢谢
答案 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');