我需要用\'(反斜杠撇号)替换特殊字符'(撇号),但这应该只在字符串之间,除了字符串的开始和结束字符。
eg:msg ='My Son's Daughter';
字符串中可以有多个撇号。我只想替换不是开始和结束字符的字符串中的撇号。
请与我分享任何想法。
我需要用\'(反斜杠撇号)替换特殊字符'(撇号),但这应该只在字符串之间,除了字符串的开始和结束字符。
eg:msg ='My Son's Daughter';
字符串中可以有多个撇号。我只想替换不是开始和结束字符的字符串中的撇号。
请与我分享任何想法。
使用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'
如图所示,仅'替换内部,忽略第一个和最后一个。
Try
msg = msg.replace(/(.)'(.)/g, "$1\\'$2");
The . at beginning and end will require any character before and after the '.
The () will catch that charachter defined in it (.) to a variable ($1 and $2).
The $1 and $2 represent the catched character of both ().
The \\ escapes/represents a literal \
The / at the start, just before the g defines this as a Regular Expression (regex)
The g is a modifier (global) that will indicate ALL occurrences.
The regex should NOT be put between quotes as if it was a string.
替换功能就是您所追求的。这应该可以解决问题:
msg = msg.replace(/'/g, "\\'");