.replace()

DiMA

php.spb.ru
Команда форума
.replace()

Есть строка, в которой что-то нужно заменить на строку "test$". Пишу команду:

str=str.replace(/что-то/g,"test$");

Это не работает, т.к. $ - управляющий символ. Пробовал его слешить: \$ \\$ \\\$ \\\\$ \\\\\$ \\\\\\$ - ничего не прошло. Как все же экранировать последовательности "\1" и "$1 в регах?
 

DiMA

php.spb.ru
Команда форума
пробовал

может в JS есть аналог str_replace? Оно-то мне тут и нужно, а не реги.
 

Crazy

Developer
Re: .replace()

Автор оригинала: DiMA
str=str.replace(/что-то/g,"test$");

Это не работает, т.к. $ - управляющий символ.
Странно. У меня твой код работает. Пример:

Код:
<script>
str = "aaa qqq bbb";
str=str.replace(/qqq/g,"test$");
document.write(str);
</script>
Что я неверно делаю?
 

DiMA

php.spb.ru
Команда форума
Хм... У меня сейчас этот пример тоже без ошибок работает, т.е. не реагирует на $.

В дома 100% понимаел $ как ссылку на кусок шаблона, по типу preg_replace("!aaa qqq bbb!","\\0",$str)

В, общем, при замене $ на $$ оно работ сейчас нормально - выходит один $. Дома же - не выходит + JS ошибка (на строку "test$0" ошибок нет).
 

DiMA

php.spb.ru
Команда форума
Ага, понятно

дома ошибка на "$" и "$0"
"$1" - ошибки нет

Сейчас на работе (самые свежие апгрейды IE):
"$" и "$0" не воспринимаются сообще
а "$1" - работает как надо

Попробуй

str = "aaa qqq bbb";
str=str.replace(/(qqq)/g,"test$1");
document.write(str);

и результатом будет "aaa testqqq bbb"

А вот так

str = "aaa qqq bbb";
str=str.replace(/(qqq)/g,"test$$1");
document.write(str);

получится "aaa test$1 bbb"

Ну что же, узнали еще об обной баге IE :)

Всем спасибо
 

DiMA

php.spb.ru
Команда форума
Один и тот же код работает по разному в IE6 (у меня дома и на работе) - это не бага?
 
Сверху