2012-01-19 2 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, "\\$"); 

$ 정규 표현식에서 "end of the line"을 의미합니다. 따라서, 라인의 모든 끝을 \$으로 바꿉니다. 정규식에서 $을 탈출하면 작동합니다.

+0

내가 str.replace '와 함께 탈출을 시도 (\\ $/g, "\\ $"); 젠장! 내가 포기 할 때까지 30 분 동안 시험해 보았습니다! – gdoron

3

정규식은 $에서도 이스케이프해야합니다. 이을합니다 (m 수정을 사용하는 경우 또는 줄의 끝) 문자열 의 끝을 의미 특수 문자이기 때문에

/\$/g 

이다.

+0

str.replace (\\ $/g, "\\ $"); ! 내가 포기할 때까지 30 분 동안 시도했습니다! – gdoron

+0

@gdoron : 아, 네 정규 표현식 리터럴은 이스케이프 문자를 문자열 리터럴처럼 삼키지 않습니다 –

+1

"저주하십시오! 우리는 그들을 싫어한다! "(반지의 제왕 ...) – gdoron

1

$은 정규식에서 특별한 의미를 가지며, 문자열의 끝 부분에 붙습니다. ^ 문자열의 시작 부분에 앵커. 그것은 당신이 기본적으로 '\의 $'와 라인의 끝을 교체 "/\$/g

말을하는 탈출 시도

0

을보십시오이 :. "aa$bb$cc".replace(/\$/g, "\\$");

관련 문제