我遇到了一个问题,我认为这是因为需要对字符串中的一些单引号加倍。但是,JS的string.replace使用RegEx,我从来没有手工构建过RegEx。
有人可以帮我构建一个RegEx来查找单引号并用两个单引号替换它吗?
答案 0 :(得分:59)
试试这个:
yourstring = yourstring.replace(/'/g, "''")
答案 1 :(得分:4)
str.replace(/'/g, "''");
确保使用全局匹配标志(g),以便替换字符串中的任何和所有匹配项。 更多信息here。
答案 2 :(得分:4)
JS的string.replace使用RegEx
不一定:
var str = "O'Reilly's books";
alert(str.replace("'", "''", 'g'));
模式可以是字符串或RegExp
嗯,我上面的代码似乎不适用于IE6,所以这将是:
str.replace(/'/g, "''")
像其他人说的那样,但是使用正则表达式进行这种简单的操作是过度的。
答案 3 :(得分:4)
您不需要使用RegExp。
String patterm版本:
str.replace("'", "''", 'g')
RegExp模式版本:
str.replace(/'/g, "''")
这里有一些有用的RegExp链接:
答案 4 :(得分:3)
试试这个:
function QuoteEncoding(strvalue) {
var strquotes = /(')/g;
return "'" + strvalue.replace(strquotes, "''") + "'";
}
按如下方式调用此方法:
QuoteEncoding(strvalue);
答案 5 :(得分:2)
请注意,如果您不想使用RegExp(并且通常有充分的理由不这样做),那么简单字符串替换的习惯用语是:
str.split("'").join("''")
虽然RegExp版本通常略快一些,但如果您不知道搜索字符串中是否存在正则字符特殊字符(如.
),则字符串版本可能会获胜。
答案 6 :(得分:1)
我不知道确切的语法,但你可以自己找到它:
str.replace(/(?!')'(?!')/g, "''");
尚未对此进行测试,但如果有效,则还需要连续替换一个单引号的出现。 g修饰符对于替换所有发生是必需的。
答案 7 :(得分:1)
您可以使用 String#replaceAll
。
const str = "'test'";
const replaced = str.replaceAll("'", "''");
console.log(replaced);
答案 8 :(得分:0)
js> s = "abc'def'xyz"
abc'def'xyz
js> s.replace(/'/g, "''")
abc''def''xyz