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 回答