gpt4 book ai didi

javascript - 动态比较正则表达式模式的匹配精度

转载 作者:行者123 更新时间:2023-11-28 03:59:58 25 4
gpt4 key购买 nike

假设我有两个正则表达式并且都匹配一个字符串,但其中一个以更严格的方式匹配它,有没有办法以编程方式解决这个问题?

例如,我匹配这个字符串:

/path/on/file/system

我有以下两个正则表达式:

const opt1 = /\/path\/on/;
const opt2 = /\/path/;

我可以亲眼看到 opt1 更严格,但是 javascript 如何知道这一点?

将正则表达式转换为字符串并检查字符长度是否是衡量严格性的一个很好的措施?

最佳答案

您可以通过以下方式实现此功能:

按长度对正则表达式进行排序。

循环遍历已排序的正则表达式数组以检查是否存在匹配

然后返回最严格匹配的元素。

function check(arrayOfRegEx, str) {
//sort the regex array by length
var sortedArr = arrayOfRegEx.sort(function(a, b) {
return a.toString().length - b.toString().length || a.toString().localeCompare(b);
});

let mostStrict = '';
sortedArr.forEach(function(reg) {
if(new RegExp((reg.toString()).replace(/\\/g, "").substring(1)).test(str)) {
mostStrict = reg;
}
});

return mostStrict;
}

var result = check([/\/path/, /\/test\/test/, /\/path\/on/], '/path/on/file/system');

console.log(result); // returns /\/path\/on/

当然,您可以调整此功能以满足您的需求

关于javascript - 动态比较正则表达式模式的匹配精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47214051/

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