2011-09-11 4 views
3

나는 문자열을 가지고 있고 나는 그들의 적절한 값으로 모든 ' 등을 교체 할 필요가자바 스크립트를 찾아서 문자 집합을 바꾸시겠습니까?

내가 이렇게하려면

var replace = str.replace(new RegExp("[']", "g"), "'");

를 사용하고 있지만, 문제는 '를 대체 할 것입니다 각 문자에 대해 (그래서 예를 들어, ''''''

어떤 도움이됩니까?

+0

오류는'[]'을 사용하고 있습니다. 제거하면 작동합니다. 또는 arnaud가 제안한 것처럼 더 컴팩트 한 JS 표기법을 사용하십시오. – xanatos

답변

9

사용 이 :

var str = str.replace(/'/g, "'"); 

[']은 문자 클래스입니다. 이것은 중괄호 안에있는 어떤 문자 이건 을 의미합니다.

/[']/ 정규식이 '의 모든 단일 문자를 대체 문자열로 대체하는 이유입니다.


대신 문자 정규식의 new RegExp을 사용하려면

:

var str = str.replace(new RegExp(''', 'g'), "'"); 

이것은 당신이 런타임에 regexps '에를 생성 할 경우 제외 혜택을,이 없습니다. 문자 클래스를 만드는

+0

두 가지 모두 "정규식이 아닌 리터럴의 종결되지 않음"오류가 발생하는 것 같습니다. – Steven

+0

http://jsfiddle.net/TC5he/ – arnaud576875

6

브래킷을 꺼내, (그 안에 모든 문자가 일치) :

var replace = str.replace(/'/g, "'"); 

편집 :이 참조

var replace = str.replace(new RegExp("'", "g"), "'"); 

또는 더 나은을하는 리터럴 사용 HTML을 탈출하는 방법에 대한 질문 : How to unescape html in javascript?

+0

두 가지 모두 "정규식이 아닌 리터럴을 종결하지 않았습니다." – Steven

+0

@Steven How 당신이 그것을 사용하고 있습니까? –

2

대신이 정규 표현식을 사용하는 것보다는 다음과 같은 것을 할 것입니다. 브라우저가 당신을 위해 해독을 처리하게하십시오 :

function HtmlDecode(s) { 
     var el = document.createElement("div"); 
     el.innerHTML = s; 
     return el.innerText || el.textContent; 
    } 
+1

+1 좋은 생각 ... 'delete el;'을 호출 할 필요는 없지만 (엄격한 모드에서는 아무런 효과가 없으며 오류가 발생합니다.) 당신은'return el.innerText ||를 할 수 있습니다. el.textContent; ' –

+0

팁 주셔서 감사합니다. –

관련 문제