[英]how to use javascript replace with variable pattern
我有一个算术表达式,可以在美国数字字中包含一个数字(例如1000100可以写成一百万一千。我需要在表达式中识别出这种模式,并将其转换为相应的数字等效形式。
我正在使用下面的代码。
var patternToExtractOperand = '\+|-|\*|\/|%\sof|%|\(|\)';
expr = expr.replace(/patternToExtractOperand(.+?)patternToExtractOperand/g,word2number($1));
word2number是一个函数,它将直到(10 ^ 68)之前的任何数字的单词表示形式转换为其相应的数字等效形式,而patternToExtractOperand是使用支持的模式准备的列表。
编写以上代码的正确方法应该是什么? 或如何使用javascript替换为可变模式?
例:
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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.