Javascript if数组包含正则表达式字符串
Javascript if arrays contains string with regex
我想知道变量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
。它比每种迭代方法(或者其他迭代方法,在本例中)都更具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]*"]
。您可以根据matches
的长度断言一个正结果。
如果要进行正则表达式匹配,请从正则表达式而不是字符串开始。
var arr = [/test/, /foo/, /bar/, /news-'d+/];
然后你可以在没有奇怪的字符串重写或积分的情况下进行正常匹配:
var matched = arr.some(re => re.test(...))
if (matched) {
doSomeThing()
}
或
for (re of arr) {
if (re.test(...)) {
doSomeThing();
break;
}
}
相关文章:
- 将电子邮件验证正则表达式字符串存储在JSON中
- 带有模式的正则表达式字符串
- Javascript if数组包含正则表达式字符串
- 在JSON中指定正则表达式字符串,在JavaScript和PHP中使用
- 从正则表达式文本中获取正则表达式字符串表示的最佳方式
- 正则表达式 - 字符串不能以空格开头,以空格结尾,并且连续包含几个空格
- 正则表达式 - 字符串不应包含超过 7 位数字
- 在 javascript 中将正则表达式字符串转换为正则表达式不同
- Javascript:测试单个字符在正则表达式字符串中找到
- 正则表达式(字符串比较)
- 是否可以生成与正则表达式字符串匹配的字符串
- 正则表达式字符串匹配
- 正则表达式字符串比较忽略符号
- 是否可以使用正则表达式解析正则表达式字符串
- 正则表达式字符串在文档中替换为 JavaScript
- 如何使正则表达式字符串拒绝空白字段
- 拆分正则表达式字符串
- 表示正则表达式字符串表示法
- 将HTML标记添加到此正则表达式字符串中
- 将正则表达式字符串转换为javascript中的正则表达式对象