Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Странно работает replace (https://javascript.ru/forum/misc/16514-stranno-rabotaet-replace.html)

Vulkan 11.04.2011 13:30

Странно работает replace
 
Приветствую, не могу понять причину происходящего:
var str = '"[]"';
alert(str.replace(new RegExp("\"[", 'g'), "[").replace(new RegExp("]\"", 'g'), "]"));
//по сути должно выдаваться '[]', а выдаётся '"[]'

Объясните пожалуйста в чём причина такого результата
p.s. тема закрыта, сам разобрался:
var str = '"[]"';
alert(str.replace(new RegExp("\"[[", 'g'), "[").replace(new RegExp("]\"", 'g'), "]"));

рони 11.04.2011 13:56

Vulkan,
Оба примера выше некросбраузерные ...
Рабочий вариант
var str = '"[]"';
alert(str.replace(new RegExp("\"\\[", 'g'), "[").replace(new RegExp("\\]\"", 'g'), "]"));

Vulkan 11.04.2011 14:03

рони, спасибо, понял.

x-yuri 12.04.2011 01:34

вообще, в данном случае можно так:
var str = '"[]"';
alert(
  str.replace(/"\[/g, "[").replace(/\]"/g, "]")
);

Sweet 12.04.2011 01:51

По-моему, в данном случае и так сойдет:D
.replace(/"/g, '')

рони 12.04.2011 07:17

Vulkan,
Рабочий вариант без экранирования квадраных скобок )))
var str = '"[]"';
alert(str.replace(new RegExp("\"[[]", 'g'), "[").replace(new RegExp("]\"", 'g'), "]"));

x-yuri 12.04.2011 08:23

Vulkan,
Рабочий вариант без экранирования двойных кавычек )))
var str = '"[]"';
alert(str.replace(new RegExp('"[[]', 'g'), "[").replace(new RegExp(']"', 'g'), "]"));

monolithed 12.04.2011 08:43

alert('"[]"'.replace(/"(\[)|(\])"/g, '$1$2'));


Часовой пояс GMT +3, время: 00:31.