我正在尝试排除英国邮政编码验证器it works fine in Regex101。但是在浏览器中失败,两个版本的所有结果都是错误的
var testArray = ["AB01 1AA",
"DD02 2RE",
"DG02 2RE",
"EH02 2RE",
"FK02 2RE",
"G02 2RE",
"HS02 2RE",
"IV02 2RE",
"KA02 2RE",
"KW02 2RE",
"KY02 2RE",
"ML02 2RE",
"PA02 2RE",
"PH02 2RE",
"TD02 2RE",
"ZE02 2RE",
"BT02 2RE",
"GY02 2RE",
"JE02 2RE",
"IM02 2RE",
"im11 2RE",
"im21 2ee",
"ZE022RE",
"BT022RE",
"GY022RE",
"je022re"];
var x = /(AB|DD|DG|EH|FK|G|HS|IV|KA|KW|KY|ML|PA|PH|TD|ZE|BT|GY|JE|IM)[0-9]{2}[ ]?[0-9]([a-zA-Z]{2})/;
var reg = RegExp('(AB|DD|DG|EH|FK|G|HS|IV|KA|KW|KY|ML|PA|PH|TD|ZE|BT|GY|JE|IM)[0-9]{2}[ ]?[0-9]([a-zA-Z]{2})','i');
for(var xx in testArray){ console.log(xx+' '+ reg.test(xx)+' '+x.test(xx));}
我必须在这里遗漏一些明显的东西。
答案 0 :(得分:3)
不要将for..in
用于数组
for (var i = 0; i < testArray.length; i++) {
console.log(testArray[i] +' '+ reg.test(testArray[i])+' '+ x.test(testArray[i]));
}
答案 1 :(得分:2)
看看你得到的输出:
0 false false
xx
始终是一个数字。您正在测试数组索引而不是数组中的值。
for(var xx in testArray){
console.log(testArray[xx]+' '+ reg.test(testArray[xx])+' '+x.test(testArray[xx]));
}
答案 2 :(得分:2)
for (i in array)
遍历关联数组的键。你可以这样做:
for(var key in testArray) {
var value = testArray[key]; // get array value
console.log(value + ' '+ reg.test( value )+' '+x.test( value ));
}