javascript (jquery やライブラリではなくプレーンな js) を使用して、正規表現でアイテムを照合し、それらに対して操作を実行しようとしています。
基本的には、帝国単位からメートル法に変換するスクリプトを作成しようとしています。これが私が持っているものです
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 カップと小麦粉 1 カップの変換は 1 つありますが、それぞれに多くの種類があるため、元の文字列の一部を返したいと考えています。
私が持っている場合
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# のように一致するグループにアクセスする方法が見つかりません。
注: これらの種類の小麦粉のいくつかは個別の変換が必要であることは認識していますが、それでもその方法を知りたい.