簡體   English   中英

javascript正則表達式.search

[英]javascript regular expression .search

我對.search有一點問題

這是代碼

// filter - posts
jQuery('.filter_by').live('click',function(){
    var target_fi = jQuery(this);
    var target_cat = target_fi.parents('.cat').children('.namechanger').val(); 
    target_fi.next().fadeIn(100);


    var cat_all = target_fi.prev().find("option").each(function(i){
        if(jQuery(this).attr('data-cats').search(target_cat)  == -1){
            jQuery(this).css({"display":"none"});
        }
    });


});

我想將變量target_cat與.search一起使用

我不能這樣做.search(/target_cat/)

如果target_cat的字符串值中生成正則表達式,則可以執行以下操作:

var mySearchTerm = new RegExp(target_cat);

...

if(jQuery(this).attr('data-cats').search(mySearchTerm)  == -1){

您需要創建RegExp對象並將其傳遞給search方法

if(jQuery(this).attr('data-cats').search(new RegExp(target_cat)) == -1 )){
...
}

要將任何內容轉換為正則表達式,只需將其放入構造函數中即可:

var something =“ foobar”; var expression = new RegExp(something,'i');

注意標志的第二個參數。 有關構造函數的更多信息,請參見RegExp ,有關事物如何工作的詳細信息,請參見正則表達式

如果你的something包含“特殊字符”(如|?{ ),您需要逃避他們,如果你希望它們字面上的意思( /foo?//foo\\?/ 這是一個為您保留所有相關字符的功能:

function escapeRegEx(string) {
  return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
}

  • 您正在使用jQuery.live ,但應改用jQuery.on
  • 您正在使用.search().match()就足夠了
  • 您正在使用顯式jQuery(this).css({"display":"none"}); jQuery(this).hide(); 足夠
  • 請注意,您在循環中重復jQuery(this) -一個就足夠了-變量是您的朋友。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM