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
の 2 番目の引数として指定された関数が呼び出され、一致した文字列全体と一致したグループ (正規表現の括弧内にある一致した文字列) と、一致が見つかった最初のインデックスと、検索が実行された実際の文字列。
したがって、あなたの場合、渡される関数replace
を次のように変更することをお勧めします。
result = stringToBeSearched.replace(regExp, function(entireMatch, firstMatchedGroup, secondMatchedGroup) {
return word2number(secondMatchedGroup);
});
は次のregExp
ように構築されます
var patternToExtractOperand = "\\+|-|\\*|\\/|%\\sof|%|\\(|\\)";
var regExp = new RegExp(patternToExtractOperand + '(.+?)' + patternToExtractOperand, "g");