2012-01-19 3 views
1

У меня есть строка "aa$bb$cc"; и я хочу, чтобы заменить его, чтобы быть "aa\$bb\$cc"
Я попытался это:

var str = "aa$bb$cc" 
str.replace(/$/g, "\\$"); 

Но outpus является "aa$bb$cc\$"

Как я могу заменить его и получить то же самое (правильный ...) результат во всех браузерах?

ответ

2
str = str.replace(/\$/g, "\\$"); 

$ в регулярном выражении означает «конец строки». Поэтому он заменяет все концы строк на \$. Побег $ в регулярном выражении, и он работает.

+0

Я пытался избавиться от нее с помощью' str.replace (\\ $/g, "\\ $"): «Черт, я пробовал это в течение получаса, пока я не сдался! – gdoron

3

Вашему регулярному выражению следует избегать $.

/\$/g 

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

+0

Я попытался сбежать от него с помощью str.replace (\\ $/g," \\ $ "); Я пробовал это в течение получаса, пока я не сдался! – gdoron

+0

@gdoron: Ах, лирическое выражение регулярного выражения не проглатывает escape-символ, как строковый литерал. –

+1

«Прокляните их! Мы ненавидим их! »(Властелин колец ...) – gdoron

1

$ имеет специальное значение в регулярном выражении, оно достигает конца строки. ^ привязывает к началу строки. Попробуйте избежать его /\$/g

Вы в основном говорят «заменить конец строки с„\ $“

0

Попробуйте это:. "aa$bb$cc".replace(/\$/g, "\\$");

Смежные вопросы