Javascript正则表达式测试方法无法正常工作

时间:2012-08-02 12:10:45

标签: javascript regex

  

可能重复:
  Why RegExp with global flag in Javascript give wrong results?

我有以下方法,我传递这些参数:

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如图所示:

Demonstration of the problem

有人能解释一下吗?

1 个答案:

答案 0 :(得分: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在这里使用的选项要好于使用正则表达式模式。

DEMO