gpt4 book ai didi

javascript - 如何在 JavaScript 中对匹配项执行操作

转载 作者:行者123 更新时间:2023-12-02 18:50:34 25 4
gpt4 key购买 nike

我正在尝试使用 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# 中那样访问比赛中的组的方法

注意:我意识到其中几种类型的面粉需要单独转换,但我仍然想知道如何做到这一点。

最佳答案

由于“g”修饰符,您无法访问您的组(仍然不知道为什么您不能,而 JavaScript 完全支持嵌套结构......)。

要达到相同的效果,您可以通过 Regex#exec 方法循环遍历字符串。因此,不要这样做:

myString.match(myRegex);

其中 myRegex 具有“g”修饰符。你可以这样做:

var match;
while(match = myRegex.exec(myString)) {
// do stuff here...
}

感谢lastIndex Regex 对象的属性,您将循环遍历字符串并最终返回 null。

关于javascript - 如何在 JavaScript 中对匹配项执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15866709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com