JavaScript で 2 つの文字列を使用して大文字と小文字を区別しない検索を実行しようとしています。
通常は次のようになります。
var string="Stackoverflow is the BEST";
var result= string.search(/best/i);
alert(result);
この/i
フラグは大文字と小文字を区別しないことを意味します。
しかし、2 番目の文字列を検索する必要があります。フラグなしでも完璧に動作します。
var string="Stackoverflow is the BEST";
var searchstring="best";
var result= string.search(searchstring);
alert(result);
上記の例にフラグを追加すると、/i
変数「searchstring」内の内容ではなく、searchstring が検索されます (次の例は機能しません)。
var string="Stackoverflow is the BEST";
var searchstring="best";
var result= string.search(/searchstring/i);
alert(result);
どうすればこれを実現できるでしょうか?
ベストアンサー1
はい、.match
ではなく を使用してください.search
。呼び出しの結果は.match
、一致した実際の文字列自体を返しますが、ブール値として使用することもできます。
var string = "Stackoverflow is the BEST";
var result = string.match(/best/i);
// result == 'BEST';
if (result){
alert('Matched');
}
このような正規表現を使用するのは、おそらく JavaScript でこれを行う最も簡潔で明白な方法ですが、これは正規表現であるため、正規表現のメタ文字を含めることができることに注意してください。文字列を他の場所 (ユーザー入力など) から取得する場合、または多くのメタ文字をエスケープする必要を回避したい場合は、indexOf
次のように使用するのが最適です。
matchString = 'best';
// If the match string is coming from user input you could do
// matchString = userInput.toLowerCase() here.
if (string.toLowerCase().indexOf(matchString) != -1){
alert('Matched');
}