只更换两者之间的特殊字符,而不是字符串的开头和结尾?

时间:2013-06-17 10:47:43

标签: javascript jquery string replace

我需要用\'(反斜杠使用者)替换特殊字符'(apostrope),但这应该只在字符串之间,除了字符串的起始和结束字符。
例如:msg ='My Son's Daughter';
字符串中可以有多个apostrope。我只想替换字符串中不是以字符开头和结尾的任意字符。

请与我分享任何想法。

3 个答案:

答案 0 :(得分:4)

使用substr()和正则表达式

的组合
var msg ="'My Son's Daughter'";

msg = msg.substr(0, 1) + msg.substr(1, msg.length-2).replace(/'/g, "\\'") + msg.substr(msg.length-1, 1);

输出:

'My Son\'s Daughter' 

如图所示,仅替换内部',忽略第一个和最后一个。

答案 1 :(得分:2)

尝试

msg = msg.replace(/(.)'(.)/g, "$1\\'$2");

开头和结尾的.将需要'之前和之后的任何字符。

()会将其中定义的charachter(.)捕获到变量($1$2)。

$1$2代表()的抓取角色。

\\转义/表示文字\

/一开始就在g将其定义为正则表达式(正则表达式)之前

g是一个修饰符(全局),表示所有出现次数。

正则表达式不应该放在引号之间,就像它是一个字符串一样。

答案 2 :(得分:0)

replace功能就是你所追求的。这应该可以解决问题:

msg = msg.replace(/'/g, "\\'");