달러 기호 간 텍스트 일치를 바꾸려고합니다.정규식으로 일치 항목 바꾸기
$match$
Some text and $some text that matches$.
안의 텍스트를 바꿔야합니다.
나는
이 작동text.replace(/\$.*?\$/g, function (match) {
return '_' + match + '_';
}
을 시도했습니다. 문제는이 함수 내부에서 일치 항목을 평가하기를 원하지만, 때로는 평가가 작동하지 않는 경우이며,이 경우 원래 일치 항목을 반환하기를 원합니다. 그래서 그것은 비슷합니다.
text.replace(/\$.*?\$/g, function (match) {
try {
return evaluate(match);
} catch (e) {
return match;
}
}
그러나 현재의 정규식에서는 일치하는 원본 텍스트의 달러 기호가 포함되어 있습니다. 달러 기호를 생략하고 싶지만 평가가 실패하면 원래 달러 기호를 다시 원합니다. 내가 할 수있는 무엇
는
text.replace(/\$.*?\$/g, function (match) {
try {
return evaluate(match.replace(/\$/g, ''));
} catch (e) {
return match;
}
}
이지만 더 우아한 방법으로 가능하지 않다? 이 같은
try..catch 이외에 괜찮은 것 같다면, 오류를 던지는 대신에'evaluate' 함수에서 무엇인가를 반환해야합니다. – adeneo