我在.gov网站上尝试过这个问题,如此处的许多问题所述,但它似乎不适用于简短的邮政编码。
我的正则表达式:
Function Test-Ping
{
Param($computer = "127.0.0.1")
$ping = new-object System.Net.NetworkInformation.Ping
Try
{
[void]$ping.send($computer,1)
$Online = $true
}
Catch
{
$Online = $False
}
Return $Online
}
当我使用格式的长邮政编码时:preg_match('^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))^', $this->post['location'], $matches)
它有效,但格式为AA9 9ZZ
之一。我需要以下格式才能工作:
答案 0 :(得分:0)
根据你给出的模式并使第二部分可选,我得到:
~^(?:gir(?: *0aa)?|[a-pr-uwyz](?:[a-hk-y]?[0-9]+|[0-9][a-hjkstuw]|[a-hk-y][0-9][abehmnprv-y])(?: *[0-9][abd-hjlnp-uw-z]{2})?)$~i
或使其更具可读性:
~ # pattern delimiter
^ # start of the string anchor
(?: # branch 1
gir
(?:[ ]*0aa)? # second part optional (branch 1)
| # branch 2
[a-pr-uwyz] # I put it in factor to shorten the pattern
(?:
[a-hk-y]?[0-9]+
|
[0-9][a-hjkstuw]
|
[a-hk-y][0-9][abehmnprv-y]
)
(?:[ ]*[0-9][abd-hjlnp-uw-z]{2})? # second part optional (branch 2)
)
$ # end of the string anchor
~ix
答案 1 :(得分:0)
由于英国邮政编码的工作方式,使用正则表达式验证它们并不是一个万无一失的解决方案。其中两个主要问题是:
皇家邮政提供PAF Database,其中包含所有英国地址,包括邮政编码。许多公司通过API和网站插件公开了这些数据。
例如,我在一家名为PCA Predict的公司工作,我们的解决方案已经a demo。这是一个在线结账表单的插件,允许客户开始键入他们地址的任何部分,并在他们选择他们的时候自动填写字段。
我们还提供REST API来静默验证和返回地址。
如果您需要任何有关地址验证的帮助,请随时发表评论,因为它可能比最初看起来更难!我也不是说你应该使用我们的服务,而是试一试,并且谷歌也有其他选择。
答案 2 :(得分:0)
我遇到了同样的问题,并且很难经常验证邮政编码,皇家邮政添加和删除邮政编码。所以在过去的两周里,我一直在建立一个地址数据库并且免费创建了一个非常讨厌的API,你可以验证邮政编码,它将返回该邮政编码的每个地址。
我希望这有用。
https://www.pervazive.co.uk/free-api-for-uk-postcode-lookup/
端点
GET: https://api.pervazive.co.uk/postcode.php?postcode=[POSTCODE]
响应
Request GET: -> https://api.pervazive.co.uk/postcode.php?postcode=AB10+1AB
返回格式:JSON
{"predictions":[
{"ID":"0","Address":"Aberdeen City Council, Marischal College, Broad Street, Aberdeen, Aberdeenshire, AB10 1AB","Postcode":"AB10 1AB"}
],"Execution_Time":"0.50983214378357","status":"200"}