문자열에 정규 표현식을 사용하여 키릴 문자로 바꾸고 싶습니다. 일치 검색 옵션을 사용하고 싶습니다. 내 문자열 교체는 라틴 문자 작업이며, 그렇게 찾고 :문자열을 키릴 문자로 바꿉니다.
'Edin'.replace(/\Edin\b/gi, ''); // Output is ""
같은 표현은 키릴 문자
작동하지 않습니다'Един'.replace(/\Един\b/gi, ''); // Output is still 'Един'
문자열에 정규 표현식을 사용하여 키릴 문자로 바꾸고 싶습니다. 일치 검색 옵션을 사용하고 싶습니다. 내 문자열 교체는 라틴 문자 작업이며, 그렇게 찾고 :문자열을 키릴 문자로 바꿉니다.
'Edin'.replace(/\Edin\b/gi, ''); // Output is ""
같은 표현은 키릴 문자
작동하지 않습니다'Един'.replace(/\Един\b/gi, ''); // Output is still 'Един'
문제는 여기에서 위치와 일치 \b
단어 경계 chracter입니다 단어 경계. 단어 경계는 (^\w|\w$|\W\w|\w\W)
으로 정의됩니다. 그리고 차례로 word character\w
은 ASCII 문자 [A-Za-z0-9_] 세트입니다. 분명히 키릴 문자는이 집합에 속하지 않습니다.
예를 들어, 같은 이유로 /\w+/
정규 표현식이 Cyrillyc 문자열과 일치하지 않습니다.
좋습니다. 왜 작동하지 않는지 설명하지만 해결책이 있습니다. – user732456
dfsq 쓴 단어 경계가 있습니다. \b
을 제거하면 원하는 결과를 얻을 수 있지만 상당히 다른 정규 표현식입니다. 단어의 일부인 경우에도 Един을 대체합니다. 이를 피하려면 negative lookahead을 사용하고 단어의 일부가 될 수 있으므로 뒤에 표시하지 말아야 할 문자를 정의하십시오.
'Един'.replace(/\Един(?![A-я])/gi, '');
@ user732456 또한 경계 ([regex101)] (http://regex101.com/r/qB8wM0/1)로'(?! [\ wЁ-ЌЎ-џ])' –
http://regex101.com/r/lS5tT3/42 – vks