Избегайте апострофов внутри строк в двойных кавычках (Javascript) - PullRequest
1 голос
/ 16 апреля 2010

Скажем, у меня есть строка, которую мне нужно оценить в javascript, например:

window.some_class.update( 'Runner', 'update_runner', '{"runner":{"id":"1","name":"Nin's Lad" } }');

Для того чтобы eval () мог оценить его, мне нужно избежать апострофа в runner_name (Nin's Lad) Это возможно с регулярным выражением? Я не хочу избегать одинарных кавычек вокруг Runner и update_runner. Я просто хотел бы избежать любых одинарных кавычек внутри двойных кавычек.

Спасибо

Ответы [ 2 ]

3 голосов
/ 16 апреля 2010

Это работает для вашего конкретного случая, но я уверен, что есть некоторые угловые случаи, которые кто-то укажет:

yourString = yourString.replace(/"([^"]*)'([^"]*)"/g, "$1\\'$2");

Кроме того, я хотел бы указать вам на последний абзац этой страницы :

eval is Evil

Функция eval - наиболее часто используемая функция JavaScript. Избегайте этого.

Если вы используете eval, возможно, есть лучший способ достичь вашей цели.

0 голосов
/ 16 апреля 2010
s = s.replace(/'(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)/g, "\\'");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...