【发布时间】:2016-10-10 14:22:37
【问题描述】:
我正在尝试替换美元符号之间的文本匹配项。
所以Some text and $some text that matches$.里面的文字$match$应该被替换掉。
我试过了
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函数返回一些东西,而不是让它抛出错误。
标签: javascript regex replace