gpt4 book ai didi

javascript 正则表达式,无组匹配或正向后查找

转载 作者:行者123 更新时间:2023-11-28 10:01:10 27 4
gpt4 key购买 nike

我有一个很大的 javascript 数组,大约有 5000 个条目。为了以合理的性能方式对所有数组项运行 RegExp 匹配,我不希望循环 exec 并提取组。我发现不分组执行的匹配要快得多*。

鉴于 javascript 没有正向查找操作,是否可以使用标准正则表达式工具包获取以下值并仅匹配数字而不会出现误报?

    // the value to be matched
var reference_field = ',1,3,8,123,';
// a series of reference id to match
var re = /(?:3|8)(?=,)/g;
reference_field.match(re);
// result, note that the second three was not intended --> ["3", "8", "3"]

如果数组不是那么长,我只需对数字进行分组,例如

    // the value to be matched
var reference_field = ',1,3,8,123,';
// a series of reference id to match
var re = /,(3|8)(?=,)/g;
var match;
while(match = re.exec(reference_field)){
if (match == null) {break;}
// do something with match[1]
}

...但就目前情况而言,我对速度很敏感,因为移动设备是目标平台。我是否错过了正则表达式的技巧,或者如果不分组就不可能。所有 javascript 正向后查找替代方案要么不起作用(逗号上的负向前查找),要么引入额外的处理开销。

最佳答案

\b 序列可以为您工作 - 它匹配单词边界,包括单词的开头和结尾。如果您知道您的字符串始终是这些以逗号分隔的数字列表,那么这将找到适当的匹配项:

/\b(?:3|8)\b/g

您也不需要在 reference_field 的开头和结尾使用额外的逗号。

关于javascript 正则表达式,无组匹配或正向后查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9187778/

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