我可以在jQuery.inArray()中使用正则表达式吗?

时间:2014-05-03 16:29:17

标签: jquery regex

如果'featured'在数组中,我希望以下if语句提醒'是',无论它是大写还是小写。

我对正则表达式也不太熟悉,所以也许我的正则表达式错了..

var myArray = ["featured", "foo", "bar"];

if( $.inArray(/featured/i, myArray) > -1 ){
    alert('yes!');
}

此外,here is a jsfiddle of the above

5 个答案:

答案 0 :(得分:3)

我不认为$.inArray支持正则表达式,但你可以创建自己的函数。

$.inArrayRegEx = function(regex, array, start) {
    if (!array) return -1;
    start = start || 0;
    for (var i = start; i < array.length; i++) {
        if (regex.test(array[i])) {
            return i;
        }
    }
    return -1;
};

工作演示:http://jsfiddle.net/jfriend00/H4Y9A/


您甚至可以覆盖现有的inArray以使其成为&#34;可选&#34;支持正则表达式,同时仍保留其常规功能:

(function() {
    var originalInArray = $.inArray;
    $.inArray = function(regex, array, start) {
        if (!array) return -1;
        start = start || 0;
        if (Object.prototype.toString.call(regex) === "[object RegExp]") {
            for (var i = start; i < array.length; i++) {
                if (regex.test(array[i])) {
                    return i;
                }
            }
            return -1;
        } else {
            return originalInArray.apply(this, arguments);
        }
    };
})();

工作演示:http://jsfiddle.net/jfriend00/3sK7U/

注意:使用此覆盖会丢失的一件事是能够在数组中查找正则表达式对象。

答案 1 :(得分:2)

数组不是字符串,但您可以使用toString

将其设为字符串
if(/featured/.test(myArray.toString())){
    alert('yes!');
}

WORKING DEMO

答案 2 :(得分:0)

不,我不这么认为。

我就是这样做的,使用($.eachmatch()):

var myArray = ["featured", "foo", "bar"];


$.each(myArray,function(index,value){
    if(value.match(/featured/i) !== null){
        alert("Yes!");
        return false;
    }
});

在JSFIDDLE上:http://jsfiddle.net/QGtZU/

答案 3 :(得分:0)

您可以使用$.grep过滤数组,然后检查长度:

 if ( $.grep( myArray, function (e, i ){ return /featured/i.test(e); }).length > 0 )
    alert( "YES!" );

答案 4 :(得分:0)

使用Javascript exec和forEach的版本。它实现了相同但不使用inArray。

var myArray = ["featured", "foo", "bar"];

var exp = /featured/i;

myArray.forEach( function(value){

   if( exp.exec(value) ){
    alert("yes");
   }

} );

<强> Fiddle