2017-09-26 9 views
0

텍스트 입력에서 따옴표를 삭제하려고합니다. 지금 내 코드는 다음과 같습니다.자바 스크립트에서 작은 따옴표가 대체되지 않습니까?

string = string.replace(/'/g, '\''); 
string = string.replace(/"/g, '\"'); 

내 출력에는 모든 큰 따옴표가 대체되었지만 작은 따옴표는 그대로 유지됩니다. 나는 내 정규 표현식에 상당히 자신 있으며, 이전에 replace 함수에 문제가 없었습니다. mySQLdb가이 문제를 망칠 가능성이 있습니까? 나는 그것을 게시하고 거의 즉시 직면하고 있습니다. 이것은 간단한 문제처럼 보입니다. 그러나 정말로 저를 곤란하게합니다.

+0

기회가있다 당신이 생각하는 것은 있다는' 아포스트로피 '는 정말로'중대한 악센트 '또는 왼쪽 | 오른쪽'작은 따옴표 '입니다. 이 https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html –

답변

3

대체 문자열은 문자열 리터럴 자체에서 소비되고 실제 문자열 값에는 존재하지 않으므로 바꾸기 작업은 null 연산입니다.

대신 정말 문자열에서 하나를 얻기 위해 백 슬래시를 이스케이프 :

string = string.replace(/'/g, "\\'"); 
string = string.replace(/"/g, '\\"'); 

당신은 물론 한 번의 작업으로이 작업을 수행 할 수 있습니다

string = string.replace(/(['"])/g, "\\$1"); 
+0

와우 duh보세요. 나는이 녀석을 보았어 야했다. 정말 고마워. 질문, 대체 문자열 \\ $ 1은 무엇입니까? –

+0

'$ 1 '은 정규 표현식 (괄호로 표시)에서 캡처 그룹에서 일치했던 것에 대한 역 참조입니다. 따옴표가 될 것입니다. ''\\''는 이스케이프 된 백 슬래시이므로 리터럴 백 슬래시입니다. – trincot

+0

했습니다! 사과, 나는 대답을 선택할 수 없었고 완전히 되돌아 와서 내 마음을 어루 만졌다. –

관련 문제