我正在尝试使用 javascript(纯 js,而不是 jquery 或库)通过正则表达式匹配项目并对它们执行操作。
基本上我正在尝试创建一个从英制测量转换为公制的脚本。这就是我所拥有的
var a = [
[/([0-9\/]+) (pound[s]?|lb)/ig, 45, "g"],
];
function convert(){
var t = document.body.innerHTML;
for(var j = 0; j < a.length; j++){
var m = t.match(a[j][0]);
for(var i = 0; i < 1; i++){
var decimal = eval(m[i].split(' ')[0]);
t = t.replace(m[i],(decimal * a[j][1]) + a[j][2]);
}
}
document.body.innerHTML = t;
}
这可行,但对于某些比赛,我想返回部分比赛。例如,一杯糖和一杯面粉有一个转换,但每种都有很多类型,所以我想返回原始字符串的一部分。
如果我有
1 cup wholemeal flour
我想将其与正则表达式相匹配
/(([0-9\/]+) ((wholemeal |plain |white |strong |self-raising )?flour))/ig
...仅对第一部分进行操作,并将整个部分替换为包含令牌的字符串,例如
//match value * conversion + unit + string token
t - t.replace(m[i], (decimal * a[j][1]) + a[j][2] + m[i][2]);
最后出来
150g wholemeal flour
但是,m[i] 是一个字符串,我无法像在 php 或 c# 中那样找到访问匹配组的方法
注意:我意识到其中几种面粉需要单独转换,但我仍然想知道如何做到这一点。