0

重複の可能性:
Javascriptでグローバルフラグを指定したRegExpが間違った結果をもたらすのはなぜですか?

これらのパラメーターを渡すメソッドは次のとおりです。

var stringValue = "50, abc";
var stringArray = stringValue.split(",");
var agePattern = /^([0-9]|[1-9][0-9]|[1][0-4][0-9]|[1][5][0])$/g;

age = getMatchingString(stringArray, agePattern);

//---------------------------------------------

function getMatchingString(stringArray, regexPattern) {
    //alert("getMatchingString");
    for (var i=0; i < stringArray.length; i++) {
        if (regexPattern.test(stringArray[i])) {

            return (stringArray[i].match(regexPattern)).toString();

        }
    }

    return null;
}

Chromeは、次のようなおかしな動作を示します。ここでは、stringArray[i]とstringArray[0]を使用したテストメソッドi = 0は、画像に示されている場合でも異なる値を示します。

問題のデモンストレーション

誰かが私にこれを説明してもらえますか?

4

1 に答える 1

1
var stringValue = "50, abc";
var stringArray = stringValue.split(",");
var age = getMatchingString(stringArray);

function getMatchingString(stringArray)
{
    var len=stringArray.length;
    for (var i=0; i < len; i++)
    {
        if(!isNaN(stringArray[i]))
        {
           return stringArray[i]
        }
    }

    return null;
}

alert(age)//50

おそらく、配列をループして年齢などの数値の存在を確認する場合はisNaN、正規表現パターンを使用するよりも、ここで使用するオプションの方がはるかに優れています。

デモ

于 2012-08-02T13:23:36.450 に答える