我需要将特殊字符'(撇号)替换为'(反斜杠撇号),但这应该只在字符串之间,除了字符串的开始和结束字符。
例:msg ='My Son's Daughter';
字符串中可以有多个撇号。我只是想替换字符串中不是开始和结束字符的撇号。
使用substr()
和regex的组合:
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");
开头和结尾的.
需要在'
之前和之后的任何字符。
()
将捕获其中定义的字符(.
)到变量($1
和$2
)。
$1
和$2
代表()
的捕获字符。
\
转义/表示字面值
开头的/
,就在g
之前,将其定义为正则表达式(regex)
g
是一个修饰符(全局),它将表示所有的出现。
正则表达式不应该放在引号之间,就好像它是一个字符串。
您需要的就是replace函数。这应该能奏效:
msg = msg.replace(/'/g, "\'");