2016-04-03 23 views
0

Bazı kelimelerin başarı, başarısızlık vb. Içerdiği html içeriğim var. Tek bir anahtar kelimeyle veya çoklu seçim onay kutularındaki anahtar kelimelerle filtrelemek için düzenli bir ifade kullanmaya çalışıyorum. Çoklu seçim onay kutularının sonucu, virgülle ayrılmış bir dizedir. Html içeriğimin başarı veya başarısızlık veya başka bir dize durumu olup olmadığını kontrol etmek için herhangi bir koşul var mı. bir dizi beklenen containig tanımlayınJquery arama sözcüğü dizgede

var filter = 'success, failure'; 
$(this).html().search(new RegExp(filter, "i")) > 0) { 
alert('data found') 
} 
+1

Yazdığınız tam dizeyle eşleşmesi dışında filtreniz (anlamlı) normal bir ifade değildir. Düzenli ifadeler hakkında bilgi edinmek için http://regexone.com/ veya http://www.regexpal.com/ adresine bakın. – rockerest

+1

Her şeyden önce: tüm kelimeleri ararken, '' b bWORD \ b' ifadesini kullanın (WORD, aradığınız sözcükdür). İkincisi: bir HTML düğümünün metin içeriğini aramak için '.html()' yerine '.text()' yi kullanın; aksi halde söz konusu kelimeyi etiket adlarında, niteliklerde vb. bulabilirsiniz.Üçüncüsü: Tam kullanım durumunuzu bilmiyorum, ancak bir dizi argümanıyla 'yeni RegExp' çağırmak yerine regex değişmezini kullanmak daha kolay olacaktır. –

+1

Ayrıca, durumunuz '0' yerine '> -1' veya '> = 0' olmalıdır. –

cevap

1

bana sadece bunun için regexes kullanarak bir sorun için arayan bir çözümün biraz olabileceğini diyelim ve çok daha sade .indexOf() veya benzeri kullanarak alabilirsiniz ... @RIYAJ KHAN’s answer gibi

Örneğin aradığınız tüm kelimeleri ile bir dizi varsa:

var WORDS = ['success', 'failure']; 
012 aşağıdaki gibi

Eğer RegExp nesnesi oluşturabilirsiniz:

var expression = new RegExp('\\b('+WORDS.join('|')+')\\b'); 

(sadece bunun için bir düzenli ifade kullanmak tek geçerli sebebi olabilir tam kelimeleri, maç sizi sağlayacaktır başında ve sonunda \b kullanma.)

JavaScript'in regex özel karakterlerinden dizelerden kurtulmak için bir işlevi olmadığını, ancak dizelerinizin regex güvenli olup olmadığını bilmiyorsanız, önce dizi öğelerinden çıkmak için this kullanın.

Sonra herhangi bir sözcüğü: Eğer kelimeler eşleştirilir olduğunu öğrenmek istiyorsanız, size yerine String.prototype.match yöntemi kullanmak zorunda olduklarını

var found = (this).text().search(expression) > -1; 

Not.

1

var filter = '(success)|(failure)'; 
$(this).html().search(new RegExp(filter, "i")) > 0) { 
alert('data found') 
} 
+1

Parense gerek yok Bu regex kelimelerin etrafında. –

+1

sadece sorgu karmaşık hale gelirse .. eşleşti ne bulmak için kullanılabilir – andNn

1

deneyin: Düzenli ifade

Vaka 1

var filter = 'success'; 
$(this).html().search(new RegExp(filter, "i")) > 0) { 
alert('data found') 
} 

Durum 2 ile veya maddesi aramak için çalışıyorum dize

var arrString = ["success","failure"]; 

çoklu seçim onay kutularının dediğiniz gibi, virgülle ayrılmış bir dizesidir.

Yani, böyle varsayıyorum.

var arrHtml = "success,test,test2,failure"; ////$(this).html() 
arrHtml.split(",").some(function(val, index) { 
    return arrString.indexOf(val) >= 0 
}) 

VEYA ECMA6:

arrHtml.split(",").some((val,index)=> arrString.indexOf(val)>=0)