用两个单引号替换单引号的正则表达式

时间:2009-10-22 21:06:26

标签: javascript regex

我遇到了一个问题,我认为这是因为需要对字符串中的一些单引号加倍。但是,JS的string.replace使用RegEx,我从来没有手工构建过RegEx。

有人可以帮我构建一个RegEx来查找单引号并用两个单引号替换它吗?

9 个答案:

答案 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'));

MDC's String replace参考:

  

模式可以是字符串或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