내가 아는 한 여기서 흥미로운 문제를 발견했습니다. 내가 문자열 내에서 교체를 만드는 데 사용하는 정규식 개체가 있습니다. 문제는 특정 문자열을 찾았 기 때문에 추가 대체를 중지하려는 경우 그렇게 할 수 없다는 것입니다. "break"문은 분명히 작동하지 않습니다. 루프가 스위치 케이스가 아니기 때문입니다.javascript regex replacement 함수가 더 많은 대체를하지 못하도록 함
"반품"을 사용하면 교체가 계속됩니다. 함수의 머리 부분에서 "불완전한"변수 (아래 예제 참조)를 사용하여 추가 대체를 방지 할 수 있지만 검사가 진행될 것이므로 필요하지 않은 정규식과 일치하는 횟수만큼 평가됩니다.
이 기능의 대체품을 완전히 중지 할 수있는 방법이 있습니까?
감사합니다.
예 : 대체 정규식이 발견되고이 코드 스토퍼 문자열
전에 발견되는 동안
var regex = new RegExp("whatever", "g");
str = str.replace(regex, function(tot, group1) {
if (group1 == "i_wanna_stop_str") {
incomplete = true;
break; <-- not working
} else {
if (incomplete) {
replacement = <captured original>;
}
else {
... compute replacement ...
}
return replacement;
}
}
가 여기에 콜백 함수를 호출 막을 방법은 없지만, 왜 특정 지점까지 매칭을 할 수있는 정규 표현식을 형성 할 수 없습니다? 좋은 서면 정규 표현식이이 문제를 해결할 수없는 예제가 있습니까? – VisioN
확인이 http://stackoverflow.com/questions/3214886/javascript-replace-only-replaces-first-match –
분명히 내가 할 수있는,하지만 여기에 요점이 아니다, 이것은 단지 예입니다. 아마 정확한 질문을해야한다 : "어떻게 특정 경기 후 교체하고이 콜백 기능을 중지 할 수 있습니다?". 여기서 "무엇이든지"라는 문자열은 많은 문자열과 일치 할 수있는 정규 표현식을 의미합니다. – Juanma