0

私はこれについて高低を見てきましたが、今それを行う方法がまったくわかりません...私のシナリオ:

 var strArray = ['Email Address'];

 function searchStringInArray(str, strArray) {
     for (var j = 0; j < strArray.length; j++) {
        if (strArray[j].match(str)) return j;
     }
     return -1;
 }

 var match = searchStringInArray('Email', strArray);

Email は Email Address と同じではありません...ただし、.match() は 2 つを一致させるべきではありませんが、一致しているようです。正確な文字列に一致させたい。誰でも私がこれを行う方法を知っていますか?

4

3 に答える 3

2

あなたがやろうとしているのと同じことのために、すでに.indexOf()があります。

したがって、ループするのではなく、次を使用しないでください:

 var match = strArray.indexOf('Email');
于 2013-07-04T16:04:09.833 に答える
1

String.matchは、パラメータ「Email」を正規表現であるかのように扱っています。==代わりに使用してください:

      if (strArray[j] == str) return j;

String.matchのMozilla Development Network ページから:

非 RegExp オブジェクト obj が渡された場合、new RegExp(obj) を使用して暗黙的に RegExp に変換されます。

于 2013-07-04T16:02:25.827 に答える
0

または正規表現を使用する

使用^して$

var str = "Email";
new RegExp(str).test("Email address")

結果: 真

そしてこれのために:

var str = "Email";
new RegExp("^" + str + "$").test("Email address")

結果: false

于 2013-07-04T16:04:35.883 に答える