gpt4 book ai didi

php - 特定英国邮政编码区号所需的 preg_match 正则表达式

转载 作者:行者123 更新时间:2023-12-04 15:31:48 32 4
gpt4 key购买 nike

我的正则表达式知识不是最好的,尽管我一直在浏览帖子以了解它,但我找不到我要找的东西。

我想使用以下内容(其中 $postcode 是用户输入的完整邮政编码):

if(preg_match("AREA CODE REGEX GOES HERE", $postcode))
{
//Do something
}

执行以下操作:

检查输入的邮政编码区号与以下 DN15、16、17、18、19、20、21、22、31、32、33、34、35、36、37、38、39、40 之一匹配的位置, 41(所有 DN)。

所以我正在寻找仅匹配那些邮政编码的正则表达式。例如,它可以是 DN21 1AB 或 DN21 2AB,但它必须与 DN21 的第一部分仍然匹配。

我希望这些信息足够了,在此先感谢您的帮助。

最佳答案

试试这个由英国政府自己提供的正则表达式模式:

(GIR 0AA)|((([A-Z-[QVX]][0-9][0-9]?)|(([A-Z-[QVX]][A-Z-[IJZ]][0-9][0-9]?)|(([A-Z-[QVX]][0-9][A-HJKSTUW])|([A-Z-[QVX]][A-Z-[IJZ]][0-9][ABEHMNPRVWXY])))) [0-9][A-Z-[CIKMOV]]{2})

因此,要将其应用于您的情况,您可以首先检查您处理的是否是有效的英国邮政编码,然后检查第一部分是否以“DN”开头,第二部分是否是接受数字数组:

$accepted_numbers = array_merge(range(15, 22), range(31, 41));

if (preg_match('#^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)|[0-9][A-HJKPS-UW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$#', $postcode) && substr($postcode, 0, 2) == 'DN' && in_array(substr($postcode, 2, 2), $accepted_numbers)) {
// The UK post code is valid according to your criteria
}

来源:http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/media/254290/GDS%20Catalogue%20Vol%202.pdf (第 11 页)

关于php - 特定英国邮政编码区号所需的 preg_match 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14935013/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com