2016-04-03 14 views
0

いくつかの単語には成功や失敗などのHTMLコンテンツがあります。複数の選択チェックボックスから1つのキーワードまたはキーワードの組み合わせでフィルタリングする正規表現を使用しようとしています。複数選択チェックボックスの結果はカンマで区切られた文字列です。私のHTMLコンテンツが成功か失敗か他の文字列の場合にチェックする条件はありますか? 1つの配列が、あなたの期待containig定義文字列内のJquery検索ワード

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

あなたの入力した正確な文字列に一致することを除いて、フィルタは(意味のある)正規表現ではありません。正規表現については、http://regexone.com/またはhttp://www.regexpal.com/を参照してください。 – rockerest

+1

まず、すべての単語を検索するときは、正規表現 '\ bWORD \ b'(ここでWORDはあなたが探している単語です)を使います。 2番目: '.html()'の代わりに '.text()'を使用して、HTMLノードのテキストコンテンツを検索します。それ以外の場合は、タグ名、属性などの単語も検索されます。第三:あなたの正確なユースケースはわかりませんが、 'new RegExp'を文字列引数で呼び出すのではなく、正規表現のリテラルを使う方が簡単かもしれません。 –

+1

また、条件がインデックス '0'で発生する可能性があるため、条件は '> 0'ではなく'> -1'または '> = 0'でなければなりません。 –

答えて

1

私はちょうどこのために正規表現を使用して問題を探しているソリューションのビットであってもよいこととしましょう、あなたは更に多くプレーン.indexOf()などを使用してしまうかもしれません@RIYAJ KHAN’s answerのように...

あなたは、例えば、あなたが探しているすべての単語、との配列がある場合:

var WORDS = ['success', 'failure']; 

次のようにあなたのRegExpオブジェクトを作成することができます。

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

を(開始時と終了時\bを使用すると、このために正規表現を使用する唯一の正当な理由とすることができる、あなただけの単語全体にマッチ保証されます。)

JavaScriptには文字列から正規表現の特殊文字をエスケープする機能はありませんが、文字列が正規表現であるかどうかわからない場合は、thisを使用して最初に配列項目からエスケープしてください。

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

注意あなたがマッチした言葉を知りたい場合は、あなたの代わりにのString.prototype.matchメソッドを使用する必要があるだろうということ:

は、次に任意の単語を検索します。

1

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

括弧の必要はありませんこの正規表現内の単語の周り。 –

+1

クエリが複雑になった場合に備えて、それは一致したものを見つけるために使用できます – andNn

1

試してみてください。私は正規表現

ケース1

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

ケース2とまたは句を検索しようとしています文字列

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

マルチ選択チェックボックスはカンマ区切りの文字列です。

だから、私はこのように仮定しています。

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

OR ECMA6:

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