iPhone 判断字符串是否为英国邮政编码

发布于 2024-12-21 08:14:10 字数 152 浏览 2 评论 0原文

在我的应用程序中,在发送字符串之前,我需要确定文本框中输入的文本是否是英国邮政编码。我没有正则表达式的能力来为自己解决这个问题,在四处搜索后我似乎无法解决这个问题!只是想知道过去是否有人做过类似的事情?

或者,如果有人能指出我正确的方向,我将不胜感激!

汤姆

In my app before I send a string off I need to work out if the text entered in the textbox is a UK Postcode. I don't have the regex ability to work that out for myself and after searching around I can't seem to work it out! Just wondered if anyone has done a similar thing in the past?

Or if anyone can point me in the right direction I would be most appreciative!

Tom

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

想挽留 2024-12-28 08:14:10

维基百科有一个关于此的好部分。基本上,答案取决于您想要处理哪种病理病例。例如:

BS7666 Schema 的另一种短正则表达式是:

<前><代码>[AZ]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}

上述表达式无法排除许多不存在的区号(例如 A、AA、Z 和 ZY)。

基本上,仔细阅读维基百科的该部分并决定您需要什么。

Wikipedia has a good section about this. Basically the answer depends on what sort of pathological cases you want to handle. For example:

An alternative short regular expression from BS7666 Schema is:

[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}

The above expressions fail to exclude many non-existent area codes (such as A, AA, Z and ZY).

Basically, read that section of Wikipedia thoroughly and decide what you need.

只有影子陪我不离不弃 2024-12-28 08:14:10

对于没有空格的邮政编码(例如 SE19QZ),我使用:(它还没有让我失望;-))

^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})

如果有空格(例如 SE1 9QZ),那么:

^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$

for post codes without spaces (e.g. SE19QZ) I use: (its not failed me yet ;-) )

^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})

if spaces (e.g. SE1 9QZ) , then:

^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$
浅紫色的梦幻 2024-12-28 08:14:10

您可以使用此正则表达式匹配大多数邮政编码:

/[A-Z]{1,2}[0-9]{1,2}\s?[0-9]{1,2}[A-Z]{1,2}/i

正则表达式可视化

这意味着.. .AZ 一次或两次 ({1,2}),后跟 1 次或两次 0-9,后跟一个空格\s 可选 ? 后跟 0-9 一两次,后跟 AZ 一两次。

这会匹配一些误报,因为我可以编写像 ZZ00 00ZZ 这样的邮政编码,但要准确匹配所有邮政编码,唯一的方法是从邮局购买邮政编码数据 - 这相当昂贵的。您还可以下载免费的邮政编码数据库,但它们的覆盖率不是 100%。

希望这有帮助。

You can match most post codes with this regex:

/[A-Z]{1,2}[0-9]{1,2}\s?[0-9]{1,2}[A-Z]{1,2}/i

Regular expression visualization

Which means... A-Z one or two times ({1,2}) followed by 0-9 1 or two times, followed by a space \s optionally ? followed by 0-9 one or two times, followed by A-Z one or two times.

This will match some false positives, as I can make up post codes like ZZ00 00ZZ, but to accurately match all post codes, the only way is to buy post code data from the post office - which is quite expensive. You could also download free post code databases, but they do not have 100% coverage.

Hope this helps.

你的笑 2024-12-28 08:14:10

维基百科有一些英国邮政编码的正则表达式: http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom#Validation

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文