我需要用\'(反斜杠使用者)替换特殊字符'(apostrope),但这应该只在字符串之间,除了字符串的起始和结束字符。
例如:msg ='My Son's Daughter';
字符串中可以有多个apostrope。我只想替换字符串中不是以字符开头和结尾的任意字符。
请与我分享任何想法。
答案 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, "\\'");