关于javascript:regex用两个单引号替换单引号

Regex for replacing a single-quote with two single-quotes

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

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


试试这个:

1
yourstring = yourstring.replace(/'/g,"''")


您不需要使用regexp。

字符串模式版本:

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

regexp模式版本:

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

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

  • ReGeXP教程
  • 正则表达式基本语法引用
  • regexp构建和测试在线工具


JS's string.replace uses RegEx

不一定:

1
2
var str ="O'Reilly's books";
alert(str.replace("'","''", 'g'));

MDC的字符串替换引用:

The pattern can be a string or a RegExp

嗯,我上面的代码似乎不适用于IE6,所以这是:

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

就像其他人说的,但是使用正则表达式进行这样简单的操作是多余的。


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

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


试试这个:

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

按如下方式调用此方法:

1
QuoteEncoding(strvalue);

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

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

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


我不知道确切的语法,但你可以自己查出来:

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

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


1
2
3
4
js> s ="abc'def'xyz"
abc'def'xyz
js> s.replace(/'/g,"''")
abc''def''xyz