web-dev-qa-db-ja.com

javascriptは大文字と小文字を区別せずに文字列を比較します

JavaScriptを使用していくつかの文字列をチェックする必要がありますが、大文字と小文字の区別が問題を引き起こしています。例えば

if('abc'=='ABC')
{
return true;
}

wordの意味は同じですが、ifループ内には入りません。私はtolower句も使用できません。なぜなら、データがどういう意味なのかわからないからです。

if('aBc'=='abC')
{
return true;
}

jqueryで実行できる場合、このためのJS関数を記述する方法。

60
ankur

両方の引数を小文字にすることができ、その方法では常に大文字と小文字を区別しない検索になります。

var string1 = "aBc";
var string2 = "AbC";

if (string1.toLowerCase() === string2.toLowerCase())
{
    #stuff
}
116
Gazler

正規表現を使用する別の方法(これはZacharyの答えよりも正確です):

var string1 = 'someText',
    string2 = 'SometexT',
    regex = new RegExp('^' + string1 + '$', 'i');

if (regex.test(string2)) {
    return true;
}

RegExp.test()はtrueまたはfalseを返します。

また、先頭に「^」(文字列の先頭を示す)、末尾に「$」(文字列の末尾を示す)を追加すると、「sometext」のみがテキストである場合にのみ正規表現が一致するようになりますstringToTestで。正規表現を含むテキストを探している場合は、それらを省略してもかまいません。

String.toLowerCase()メソッドを使用する方が簡単かもしれません。

したがって...正規表現は強力ですが、使用方法を理解している場合にのみ使用してください。理解できないものを使用すると、予期しないことが起こります。

正規表現「チュートリアル」はたくさんありますが、ほとんどは特定の製品をプッシュしようとしているようです。これはまともなチュートリアルのように見えます...当然ですが、PHPを使用するために書かれていますが、そうでない場合は、ニースの初心者向けチュートリアルのように見えます。 http://weblogtoolscollection.com/regex/regex.php

これは、正規表現をテストするのに適したツールのようです: http://gskinner.com/RegExr/

18
Akrikos

String.match()を使用することもできます。

var string1 = "aBc";
var match = string1.match(/AbC/i);

if(match) {
}
9
Zachary

これを試して...

if(string1.toLowerCase() == string2.toLowerCase()){
    return true;
}

また、ループではなく、コードのブロックです。ループは通常繰り返されます(ただし、ループは1回しか実行できません)が、コードのブロックは繰り返されません。

ToLowerCaseを使用しないことについてのメモを読みましたが、なぜそれが問題になるのかわかりません。

4
belugabob