JavaScript RegEx:如果关键字字符串的任何部分匹配数组中的值,则返回true
JavaScript RegEx: Return true if any part of keyword string matches value in array
我有一个时间得到一个简单的正则表达式工作。我讨厌正则表达式:
我有一个电视频道名称数组,我需要与来自搜索字段的值进行比较。如果搜索文本的任何部分匹配,则它通过。
所以搜索"dis"
应该传递:"Discovery Channel"
, "Disney Channel"
, "24 Hour Disco"
等
如何做到这一点?
您可以对filter
和match
这样做:
var channels = ["Discovery Channel", "Disney Channel", "24 Hour Disco", "CNN"];
var filter = function(channel) {
return channel.match(/dis/i);
};
alert(channels.filter(filter));
如果你必须传递你的查询部分,你可以这样调用函数:
var channels = ["Discovery Channel", "Disney Channel", "24 Hour Disco", "CNN"];
var filter = function(term) {
return function(channel) {
return channel.match(new RegExp(term, "i"));
}
};
alert(channels.filter(filter('dis')));
不需要正则表达式,这:
var data = ["Discovery Channel", "Disney Channel", "24 Hour Disco", "foo", "bar", "fail"];
for(i = 0; i < data.length; i++) {
if(data[i].toLowerCase().indexOf('dis') !== -1) {
console.log(data[i]);
}
}
输出:
Discovery Channel
Disney Channel
24 Hour Disco
当然,您总是可以使用regex。替换:
data[i].toLowerCase().indexOf('dis') !== -1
与这个:data[i].match(/dis/i)
更新:
对于正则表达式解决方案…如果变量中包含'dis'
,则可以直接构造RegExp
对象:
var pattern = 'dis';
var regex = new RegExp(pattern, 'i');
data[i].match(regex);
相关文章:
- JavaScript:只有当数组中的所有项都为true时才执行函数
- 通过AJAX从具有LazyLoadingEnabled=true的EF返回的数组不正确
- _.数组中的每个查找值都返回 true 或 false.使用下划线 JS
- 如何通过javarscript或jquery在数组中添加属性复选框(checked=true)
- 检查对象数组是否包含布尔值true/false
- 空数组在比较时返回 false,但在单独返回 true 时返回 true.为什么这样
- 如何在数组中查找重复值并返回 True 或 False
- 在 JavaScript 中,数组如何引用到空字符串 + true 中是一个有效字符
- 测试数组中的任何项是否返回 true
- 为什么空的 JavaScript 数组在条件结构中的计算结果为 true
- 如果数组的所有值都为真,如何返回 true,否则返回 false
- 在空的 jQuery 选择器数组上返回 “true”
- 如何在Angular中检查数组中对象列表的至少一个值是否为true
- 为什么 Array.prototype.each 在空数组上返回 true
- 检查随机化的数字是否在数组中,如果为true,则再次随机化
- JavaScript执行函数数组&如果全部返回True,则返回True
- 如何入选:true"从数组
- 在数组中找到值,然后用Angular forEach返回true
- 如果存在匹配,JavaScript对两个数组(一个嵌套数组,一个扁平数组)的部分匹配应该返回true
- JavaScript RegEx:如果关键字字符串的任何部分匹配数组中的值,则返回true