2014-09-26 6 views
6

문자열에 정규 표현식을 사용하여 키릴 문자로 바꾸고 싶습니다. 일치 검색 옵션을 사용하고 싶습니다. 내 문자열 교체는 라틴 문자 작업이며, 그렇게 찾고 :문자열을 키릴 문자로 바꿉니다.

'Edin'.replace(/\Edin\b/gi, ''); // Output is "" 

같은 표현은 키릴 문자

작동하지 않습니다
'Един'.replace(/\Един\b/gi, ''); // Output is still 'Един' 
+0

http://regex101.com/r/lS5tT3/42 – vks

답변

7

문제는 여기에서 위치와 일치 \b 단어 경계 chracter입니다 단어 경계. 단어 경계는 (^\w|\w$|\W\w|\w\W)으로 정의됩니다. 그리고 차례로 word character\w은 ASCII 문자 [A-Za-z0-9_] 세트입니다. 분명히 키릴 문자는이 집합에 속하지 않습니다.

예를 들어, 같은 이유로 /\w+/ 정규 표현식이 Cyrillyc 문자열과 일치하지 않습니다.

+0

좋습니다. 왜 작동하지 않는지 설명하지만 해결책이 있습니다. – user732456

4

dfsq 쓴 단어 경계가 있습니다. \b을 제거하면 원하는 결과를 얻을 수 있지만 상당히 다른 정규 표현식입니다. 단어의 일부인 경우에도 Един을 대체합니다. 이를 피하려면 negative lookahead을 사용하고 단어의 일부가 될 수 있으므로 뒤에 표시하지 말아야 할 문자를 정의하십시오.

'Един'.replace(/\Един(?![A-я])/gi, ''); 
+1

@ user732456 또한 경계 ([regex101)] (http://regex101.com/r/qB8wM0/1)로'(?! [\ wЁ-ЌЎ-џ])' –

관련 문제