1

特定の文字列で複数の文字列の可用性を確認したかった (ループを使用せずに)。

お気に入り

my_string = "How to find occurence of multiple sting in a given string using javascript RegExp";
// search operated on this string
// having a-z (lower case) , '_' , 0-9 , and space

// following are the strings wanted to search .( having a-z , 0-9 , and '_')

search_str[0]="How";
search_str[1]="javascript";
search_str[2]="sting";
search_str[3]="multiple";
  • 彼らの立場はいらない。
  • すべての search_str がmy_string にある必要があることを知る必要がありました。
  • search_str の順序が結果に影響することはありません。

これに利用できる正規表現はありますか?

更新:何が欠けていますか

回答で、これが上記の問題で機能していることがわかりました

if (/^(?=.*\bHow\b)(?=.*\bjavascript\b)(?=.*\bsting\b)(?=.*\bmultiple\b)/.test(subject)) {
    // Successful match
}

しかし、この場合、それは機能していません。

m_str="_3_5_1_13_10_11_";
search_str[0]='3';
search_str[1]='1';
tst=new RegExp("^(?=.*\\b_"+search_str[0]+"_\\b)(?=.*\\b_"+search_str[1]+"_\\b)");
if(tst.test(m_str)) alert('fooooo'); else  alert('wrong');
4

1 に答える 1

5
if (/^(?=.*\bHow\b)(?=.*\bjavascript\b)(?=.*\bsting\b)(?=.*\bmultiple\b)/.test(subject)) {
    // Successful match
}

これは、文字列に改行が含まれていないことを前提としています。含まれている場合は、すべてのをに変更する必要があり.ます[\s\S]

単語境界アンカーを使用して、誤って一致するHowardかどうかを確認しました。restingそれを許可したい場合は、を削除してください\b

説明:

(?=...)先読みアサーションです。文字列を先読みして、一致する文字を実際に消費することなく、囲まれた正規表現 現在の位置で一致するかどうかを確認します。したがって、一連の先読みは、論理演算子^と組み合わされた一連の正規表現(によって文字列の先頭に固定されている)のように機能します。&&

于 2013-03-01T06:47:29.720 に答える