代码之家  ›  专栏  ›  技术社区  ›  Adam V

用两个单引号替换单引号的regex

  •  30
  • Adam V  · 技术社区  · 15 年前

    我遇到了一个问题,我认为这是由需要在字符串中对一些单引号进行双引号引起的。然而,JS的string.replace使用了regex,我从未手工构建过regex。

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

    8 回复  |  直到 12 年前
        1
  •  57
  •   Rubens Farias    15 年前

    试试这个:

    yourstring = yourstring.replace(/'/g, "''")
    
        2
  •  4
  •   PhiLho    15 年前

    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
  •   Evan Meagher    15 年前

    str.replace(/'/g, "''");

    请确保使用全局匹配标志(G),以便替换字符串中的所有出现项。 更多信息 here .

        4
  •  4
  •   rogal111    12 年前

    您不需要使用regexp。

    字符串模式版本:

    str.replace("'", "''", 'g')
    

    regexp模式版本:

    str.replace(/'/g, "''")
    

    这里有一些有用的regexp链接:

        5
  •  3
  •   bensiu CandorZ    13 年前

    试试这个:

    function QuoteEncoding(strvalue) {
        var strquotes = /(')/g;
        return "'" + strvalue.replace(strquotes, "''") + "'";
    }
    

    按如下方式调用此方法:

    QuoteEncoding(strvalue);
    
        6
  •  2
  •   bobince    15 年前

    注意,如果您不想使用regexp(而且通常有充分的理由不使用),那么简单字符串替换的习惯用法是:

    str.split("'").join("''")
    

    尽管regexp版本通常速度稍快,但当您不知道是否可能有regex特殊字符(如 . )在搜索字符串中。

        7
  •  1
  •   Franz    15 年前

    我不知道确切的语法,但你可以自己找到:

    str.replace(/(?!')'(?!')/g, "''");
    

    还没有测试过这个,但是如果它有效的话,它也只负责替换 连续单引号。G修饰符是替换所有事件所必需的。

        8
  •  0
  •   DigitalRoss    15 年前
    js> s = "abc'def'xyz"
    abc'def'xyz
    js> s.replace(/'/g, "''")
    abc''def''xyz