【问题标题】:if/else extracting part of a UK postcodeif/else 提取英国邮政编码的一部分
【发布时间】:2019-12-25 03:21:36
【问题描述】:
我正在尝试使用 if/else 从 javascript 中的完整邮政编码中提取英国邮政编码的第一部分
基本上,如果邮编是格式的话;
AB99 9CD需要返回AB
A9 9BC需要返回A
A99 9BC需要返回A
AB9C 9DE需要返回AB。
我想试试
if (fieldname == LETTER1 LETTER2 NUM NUM NUM LETTER3 LETTER 4)
return LETTER 1 LETTER 2;
以此类推,然后使用 else 作为错误消息,以便它识别格式并返回前一个或两个字母,但不知道要使用什么代码。
【问题讨论】:
标签:
javascript
if-statement
【解决方案1】:
根据英国邮政编码上的Wikipeda entry,以下正则表达式可用于验证英国邮政编码:
^[A-Z]{1,2}[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$
将它与捕获组一起使用,将为您提供英国邮政编码中外部组的“区域”部分:
("EC1A 1BB").match(/^([A-Z]{1,2})[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$/)[1]
// Gives "EC"
【解决方案2】:
您可以使用正则表达式来做到这一点:
var str1 = 'AB99 9CD';
var str2 = 'A9 9BC';
var str3 = 'A99 9BC';
var str4 = 'AB9C 9DE';
var pattern = /^([a-zA-Z]+)/;
console.log('Letters 1:', str1.match(pattern)[0]);
console.log('Letters 2:', str2.match(pattern)[0]);
console.log('Letters 3:', str3.match(pattern)[0]);
console.log('Letters 4:', str4.match(pattern)[0]);
^ 意思是:开头。
() 表示:一组。
[a-zA-Z] 表示:接受字母字符。
+ 在这种情况下意味着:[] 中的所有内容都可以被接受一次或多次。
【解决方案3】:
首先使用函数 split("your criteria") 拆分您的地址。然后,检查第一个字符。如果是非数字,函数isNaN()
function Verify(address) {
var arrAdd = address.split(" ")
if (isNaN(arrAdd[0][0])) {
if (isNaN(arrAdd[0][1]))
return arrAdd[0]
else
return arrAdd[0][0]
}
}
console.log(Verify("A9 BBX"))