英国排除了Postcode正则表达式失败

时间:2015-01-08 15:10:03

标签: javascript regex

我正在尝试排除英国邮政编码验证器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));}

Also jsfiddle.

我必须在这里遗漏一些明显的东西。

3 个答案:

答案 0 :(得分:3)

不要将for..in用于数组

for (var i = 0; i < testArray.length; i++) {
    console.log(testArray[i] +' '+ reg.test(testArray[i])+' '+ x.test(testArray[i]));
}

Example

答案 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 ));
}
相关问题