2013-02-20 35 views
13

単語が大文字と小文字の違いを無視して特定の部分文字列で始まるかどうかを確認する必要があります。私は次の正規表現の検索パターンを使用してこのチェックを行ってきましたが、文字列全体で大文字と小文字の違いがある場合は役に立ちません。大文字と小文字の違いを無視して正規表現を確認する正規表現

私の大文字と小文字を区別方法:

var searchPattern = new RegExp('^' + query); 
if (searchPattern.test(stringToCheck)) {} 

答えて

34

は、2番目の引数としてi修飾子を渡します

new RegExp('^' + query, 'i'); 

は、より多くの情報のためthe documentationを見てください。

+1

ありがとうございました! SOが許可するとすぐに受け入れます! –

2

このpageでは、修飾子を2番目のパラメータとして追加できることがわかります。あなたのケースでは、「I」(小文字を区別しないCanse)

//Syntax 
var patt=new RegExp(pattern,modifiers); 

//or more simply: 

var patt=/pattern/modifiers; 
+1

w3schools.comはおすすめしません。 http://w3fools.comの理由を参照してください。 –

+0

@MarcelKorpel done ..私はGoogleで見た他のものに切り替えました。ありがとう! – SERPRO

13

を探していますあなたは、文字列の比較、まったくの正規表現を必要としない:

if (stringToCheck.substr(0, query.length).toUpperCase() == query.toUpperCase()) 

デモ:http://jsfiddle.net/Guffa/AMD7V/

これは、RegExpソリューションを動作させるために文字をエスケープする必要がある場合も扱います。たとえば、query="4*5?"は常に他のものとすべて一致します。

+0

は、この方法は正規表現検索よりもパフォーマンスが良いですか? –

+3

@ user01:私がインストールした3つのブラウザでこれをテストしたところ、すべての方が高速でした:http://jsperf.com/regex-vs-compare – Guffa

+1

+1&ありがとう。私はこの解決策に行くだろうが、正規表現について質問された質問については、私はその答えを受け入れる必要があります。 –

2

私は以前の答えがすべて正しいと思いますが、ここでSERPROに似た別の例がありますが、違いは新しいコンストラクタがありません: 注意:大文字と小文字は無視され、^はで始まります。

var whatEverString = "My test String"; 
var pattern = /^my/i 
var result = pattern.test(whatEverString); 
if (result === true) { 
    console.log(pattern, "pattern did match !"); 
} else { 
    console.log(pattern, " pattern did NOT match"); 

} 

これは、試してみたい場合はjsfiddleです。

enter image description here

関連する問題