可能重复:
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
如图所示:
有人能解释一下吗?
答案 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
在这里使用的选项要好于使用正则表达式模式。