gpt4 book ai didi

javascript - 正则表达式 - 匹配搜索字符串中单词的较好部分

转载 作者:行者123 更新时间:2023-11-30 07:13:21 24 4
gpt4 key购买 nike

我正在使用 Javascript,目前正在寻找一种方法来匹配尽可能多的模式字母,同时保持原始顺序..

例如,搜索模式 queued 应该针对以下任何搜索字符串返回 march Queue/queue:

  • queueTable

  • scheduledQueueTable

  • qScheduledQueueTable

到目前为止,我已经做到了这一点:

var myregex = new RegExp("([queued])", "i");
var result = myregex.exec('queueTable');

但它似乎无法正常工作,因为它突出显示了单个字符 q,u,e,uee 在单词 Table 的末尾。

有什么想法吗?

最佳答案

optional 生成正则表达式non-capturing group可以使用 Array#reduceRight 生成正则表达式模式的部分方法。

var myregex = new RegExp("queued"
.split('')
.reduceRight(function(str, s) {
return '(?:' + s + str + ')?';
}, ''), "i");
var result = myregex.exec('queueTable');

console.log(result)

该方法生成正则表达式:/(?:q(?:u(?:e(?:u(?:e(?:d?)?)?)?)?)?)?/


更新:如果您想获得第一个最长的匹配项,请在正则表达式中使用 g 修饰符并使用 Array#reduce 找出最大的匹配项方法。

var myregex = new RegExp(
"queued".split('')
.reduceRight(function(str, s) {
return '(?:' + s + str + ')?';
}, ''), "ig");

var result = 'qscheduledQueueTable'
.match(myregex)
.reduce(function(a, b) {
return a.length > b.length ? a : b;
});

console.log(result);

关于javascript - 正则表达式 - 匹配搜索字符串中单词的较好部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42454823/

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