2012-11-03 4 views
6

문자열의 단어가 아닌 문자를 모두 바꾸려면 도움이 필요합니다.? * + #와 같은 단어 이외의 문자를 모두 바꾸십시오.

예로서 (stadtbezirkspräsident'stadtbezirkspräsident이되어야합니다.

이 정규식은 모든 언어에서 작동하므로 ñ 또는 œ과 같은 문자를 어떻게 일치 시킬지 모르기 때문에 까다로울 수 있습니다. 나는

string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' '); 

이것을 해결 시도했지만 THER는 Ø 왼쪽처럼 많은 특수 문자에 여전히.

아마도 여기에는 일반적인 Selector가 있습니까? 아니면 이전에이 문제를 해결 한 사람이 있습니까?

+0

Ø는 다양한 언어로 된 문자입니다 (예 : 덴마크어). –

+0

유사 : [this] (http://stackoverflow.com/questions/2392194/how-to-match-the-international-alphabet-english) -az-non-english-with-a-regu) 질문. javascript regex에는 고유 한 유니 코드 인식 matchers가 없습니다. –

답변

6

를 사용해보십시오. 그것은 스티븐 Levithan의 XRexExp package with Unicode add-ons을 사용하고 유니 코드 속성 바로 가기를 사용하는 것이 더 적합 할 수 있습니다

:

var regex = new XRegExp("\\P{L}+", "g") 
string = XRegExp.replace(string, regex, "") 
+1

@ Ωmega : 편집 해 주셔서 감사합니다! –

+1

thx !!!! : D 조 XRegExp 정말 대단해! –

6

는 유니 코드가 자신 범위 모든, 많은 일이 될 것 정의가있는 경우 트릭을

str.replace(/(?!\w)[\x00-\xC0]/g, '') 
+1

'\ w'는 로케일 인식 또는 유니 코드 인식이 아닙니다. –

+0

@TimPietzcker - 알아,하지만 내 솔루션은 낮은 16 진수 범위의 특수 문자를 –

+1

만 제거합니다 (예, 내 의견을 쓰는 것처럼 수정하지 않았습니까?) - 그렇지만 여전히 충분하지 않은 문자가 있습니다. (8 비트 ANSI 세트 내 에서조차 :'x'와'÷'가 마음에와 있습니다.) –

1

이 팀 Pietzcker의 대답에 주석의 더하지만, 의견 코드를 제시하는 것은 어색가 ... 여기 XRexExp 패키지를 사용하는 간단한 예 : 제품 사용에

<p id=orig>Bundespräsident/ß+ð/ə¿α!</p> 
<p id=new></p> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-min.js"> 
</script> 
<script src="http://xregexp.com/addons/unicode/unicode-base.js"> 
</script> 
<script> 
var regex = new XRegExp("\\P{L}+", "g"); 
var string = document.getElementById('orig').innerHTML; 
string = XRegExp.replace(string, regex, ""); 
document.getElementById('new').innerHTML = string; 
</script> 

, 당신은 아마 기본 패키지 및 유니 코드 플러그인의 일부 버전을 다운로드하여 서버를 사용하고자하는 것입니다.

참고 : 코드는 유니 코드에서 문자 (알파벳)로 분류되지 않은 문자를 확인합니다. 자연 언어의 단어에는 하이픈, 아포스트로피 및 기타 비 문자가 포함될 수 있지만 "단어 문자"의 의미와 일치한다고 생각합니다.

문자가 유니 코드에 추가되고 문자의 범주가 (거의 변경되지 않을 수도 있음)주의하십시오. 패키지는 잘 유지되고있다. 그것은 유니 코드 6.1에 해당합니다 (버전 6.2가 있지만 새로운 문자는 없습니다).

관련 문제