ドル記号間のテキストのマッチングを置き換えようとしています。正規表現でマッチを置き換えます
$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