您可能想阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter
例子:
var patternToExtractOperand = "\\s*([A-Za-z]+)(\\d*)";
var regExp = new RegExp(patternToExtractOperand, "g");
console.log(" Welcome123 Welcome321".replace(regExp, function() {
console.log(arguments);
return arguments[1];
}));
输出
{ '0': ' Welcome123',
'1': 'Welcome',
'2': '123',
'3': 0,
'4': ' Welcome123 Welcome321' }
{ '0': ' Welcome321',
'1': 'Welcome',
'2': '321',
'3': 13,
'4': ' Welcome123 Welcome321' }
WelcomeWelcome
解释
每当有匹配时,调用指定为replace
的第二个参数的函数,匹配的整个字符串和匹配的组(匹配的字符串位于正则表达式中的括号内)以及找到匹配项的第一个索引,然后执行搜索的实际字符串。
因此,在您的情况下,您可能希望更改传递给的函数replace
,如下所示。
result = stringToBeSearched.replace(regExp, function(entireMatch, firstMatchedGroup, secondMatchedGroup) {
return word2number(secondMatchedGroup);
});
并且regExp
会像这样构造
var patternToExtractOperand = "\\+|-|\\*|\\/|%\\sof|%|\\(|\\)";
var regExp = new RegExp(patternToExtractOperand + '(.+?)' + patternToExtractOperand, "g");