gpt4 book ai didi

Javascript 如果数组包含带有正则表达式的字符串

转载 作者:行者123 更新时间:2023-12-05 01:19:58 24 4
gpt4 key购买 nike

我想知道变量 url 是否匹配数组的任何值
例如,这是我的数组:

var arr = ["test", "foo", "bar", "news-[0-999999999999999]*"];

...和我的字符串

var url = "news-294";

我需要检查每个 arr 值是否与 url 匹配,使用 regex

所以我在数组上尝试了 foreach,为每个值尝试了 new RegExp,然后检查它是否匹配。但它运行不佳,而且它正在泄漏我的浏览器内存(CPU 为带有脚本的空白页面占用 24%)

我该怎么做?谢谢

编辑:这是我的代码:

var CMS = {
RegexMatch: function(regex, str, callback) {
while ((m = regex.exec(str)) !== null) {
if(m[0] == str) callback();
}
},
ArrayFindRegex: function(array, str, callback) {
array.forEach(function(e) {
CMS.RegexMatch(new RegExp(e), str, function() {
callback();
});
});
},
Check: function() {
var url = "blabla";
CMS.ArrayFindRegex(["test", "foo", "bar", "news-[0-999999999999999]*"], url, function() {
console.log('wow');
});
}
}
}

最佳答案

尝试 Array.prototype.filter反而。它比 each (或其他迭代方法,在这种情况下)更 idomatic。 filter 返回一个数组,内容为任何匹配项,如果未找到则为空。

var arr = ["test", "foo", "bar", "news-[0-999999999999999]*"];
var url = "news-294";

var matches = arr.filter(function(pattern) {
return new RegExp(pattern).test(url);
})

console.log(matches);

以上示例记录 ["news-[0-999999999999999]*"]。您可以根据匹配项的长度断言一个肯定的结果。

关于Javascript 如果数组包含带有正则表达式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36607869/

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