저는 액센트 문자가 포함되어 있거나 포함되어 있지 않을 수있는 단어를 대체 할 정규식을 찾으려고했습니다. 나는 지난 2 일 동안 이것을 연구했지만 문제를 해결하는 데 필요한 정보를 찾을 수 없습니다.액센트 문자를 포함 할 수있는 단어를 대체하는 자바 스크립트
나는 훌륭한 악센트 문자없이 단어를 처리하는 간단한 정규식을 마련했다 :
var re = new RegExp('(?:\\b)hello(?:\\b)', 'gm');
var string = 'hello hello hello world hellos hello';
string.replace(re, "FOO");
결과 : FOO FOO FOO world hellos FOO
위의 작품을 내가 원하는대로
. 위의 코드에서 문제는 단어에 악센트 문자가 문자열의 첫 번째 문자 또는 마지막 문자로 포함 된 경우입니다. 예 :
var re = new RegExp('(?:\\b)helló(?:\\b)', 'gm');
var string = 'helló helló helló world hellós helló';
string.replace(re, "FOO");
결과 : helló helló helló world FOOs helló
원하는 결과 : 악센트 문자가 경계로 해석되기 때문에 나의 이해에서 FOO FOO FOO world hellós FOO
은, 위의 발생. 문제 해결에서 내 시도 (주의 : 범위 [A-zÀ-ÿ]
내가 단어를 구성하는 데 유효한 알파벳을 고려할 것입니다) :
var re = new RegExp('([^A-zÀ-ÿ]|^)helló([^A-zÀ-ÿ]|$)', 'gm');
var string = 'helló helló helló world hellós helló';
string.replace(re, "$1FOO$2");
결과 : 당신이 볼 수 있듯이 FOO helló FOO world hellós FOO
, 나는 훨씬 더 가까이 해요 원하는 결과. 그러나이 문제는 문제의 단어가 세 번 이상 연속적으로 나타날 때 발생합니다. 두 번째로 나타나는 helló
은 무시되었습니다. 그 공백 앞에있는 공백이 이미 첫 번째 발생 인 helló
에 의해 일치 되었기 때문입니다.
아무도 FOO FOO FOO world hellós FOO
을 달성하는 방법에 대한 제안 사항이 있습니까?
http://stackoverflow.com/questions/5436824/matching-accented-characters-with-javascript-regexes의 중복 가능성이 있지만 확인할 때까지 hamer를 사용하지 않습니다. – mplungjan
요구 사항이 무엇인지 정확히 설명 할 수 있습니까? 단어 일치? 문자열이나 특정 위치의 모든 인스턴스에 대해 대체됩니까? 그래서 그 정규식 대신 왜'helló \ B'가 아니겠습니까? – 10100111001