Regex для замены одинарных кавычек двумя одинарными кавычками - PullRequest
30 голосов
/ 23 октября 2009

Я столкнулся с проблемой, которая, по-моему, вызвана необходимостью удвоить некоторые одинарные кавычки внутри строки. Однако в JS string.replace используется RegEx, и я никогда не создавал RegEx вручную.

Может ли кто-нибудь помочь мне построить RegEx, чтобы найти одинарную кавычку и заменить ее двумя одинарными кавычками?

Ответы [ 8 ]

59 голосов
/ 23 октября 2009

Попробуйте это:

yourstring = yourstring.replace(/'/g, "''")
4 голосов
/ 11 июля 2012

Вам не нужно использовать RegExp.

Версия строки:

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

Версия шаблона RegExp:

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

Вот несколько полезных ссылок RegExp:

4 голосов
/ 23 октября 2009

JS string.replace использует RegEx

Не обязательно:

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

Строка MDC заменяет ссылка:

Шаблон может быть строкой или RegExp

Ммм, мой код выше не работает на IE6, так что это будет:

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

, как говорили другие, но использование регулярных выражений для такой простой операции излишне.

4 голосов
/ 23 октября 2009

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

Обязательно используйте глобальный флаг соответствия (g), чтобы заменить все вхождения в строке. Подробнее здесь .

3 голосов
/ 17 ноября 2010

Попробуйте это:

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

вызовите этот метод следующим образом:

QuoteEncoding(strvalue);
2 голосов
/ 23 октября 2009

Обратите внимание, что если вы не хотите использовать RegExp (и часто на это есть веские причины), идиома простой замены строки:

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

Хотя версия RegExp обычно немного быстрее, строковая версия может быть выигрышной, если вы не знаете, могут ли быть специальные символы регулярного выражения (например, .) в строке поиска.

1 голос
/ 23 октября 2009

Я не знаю точного синтаксиса, но вы можете узнать это сами:

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

Еще не проверял, но если он работает, он также позаботится только о замене вхождений одной одинарной кавычки подряд. Модификатор g необходим для замены всех вхождений.

0 голосов
/ 23 октября 2009
js> s = "abc'def'xyz"
abc'def'xyz
js> s.replace(/'/g, "''")
abc''def''xyz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...