1. ホーム
  2. ジャバスクリプト

[解決済み】大文字・小文字を区別しない検索機能

2022-04-19 01:52:45

質問

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);

どうすれば実現できるのでしょうか?

どのように解決するのですか?

そうです。 .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');
}