我需要一种方法来从用户输入中分割英国邮政编码.这意味着postocode可以很好地格式化完整代码,就像"AB1 1BA"或它可能是你能想象的任何东西.我已经看到一些正则表达式检查邮政编码的格式,但它知道在哪里分割它,如果我给了类似"AB111AD"等的东西.这是为了返回邮政编码的第一部分,在上面的例子中将是"AB11".有什么想法吗?谢谢..
我希望能够验证英国邮政编码,理想情况下,我希望通过以下案例:
我有以下正则表达式模式:
^(GIR 0AA)|(((A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|((E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(SW|W)([2-9]|[1-9][0-9])|EC[1-9][0-9])( [0-9][ABD-HJLNP-UW-Z]{2})?)$
Run Code Online (Sandbox Code Playgroud)
此模式允许使用3或4和6或7位数的邮政编码(因此,只有3或4位数的外向代码,或6或7位数的完整邮政编码),但它不允许使用第4和第6点(空格包含的邮政编码)被省略了)
我也有这种模式:
^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKPS-UW]) {0,1}[0-9][ABD-HJLNP-UW-Z]{2})$
Run Code Online (Sandbox Code Playgroud)
这种模式允许6或7位数的邮政编码,我们没有空格,但不适用于不完整的邮政编码(仅限外向代码)
很抱歉在这里已经提到了一个已经广泛涵盖的问题,但是我找到的所有例子都符合我的要求,但不是全部.
理想情况下,我想要一个正则表达式模式,允许3,4,6和7位数的邮政编码,我们没有空格.
更新:
我已经完成了我的通过案件,因为我认为它最初并不完全全面.其基本概念应遵循英国邮政编码模式,并验证以下任何组合:
1 Letter 1 Number
1 Letter 2 Numbers
2 Letters 1 Number
2 Letters 1 Number 1 Letter
2 Letters 2 Numbers
1 Letter 1 Number (OptionalSpace) 1 Number 2 Letters
1 Letter 2 Numbers (OptionalSpace) 1 Number 2 Letters
2 Letters 1 Number (OptionalSpace) …Run Code Online (Sandbox Code Playgroud) 我有一个Asp.Net网站,我想使用RegularExpressionValidator检查英国邮政编码是否为英文(即不是苏格兰,威尔士或N.Irish).
应该可以通过仅使用第一个segmant(称为Postcode Area)中的字母来查看邮政编码是否为英文.总共有124个邮政编码区域,这是它们的列表.
从该列表中,以下邮政编码区域不在英格兰.
正则表达式的输入可以是整个邮政编码,也可以只是邮政编码区域.
任何人都可以帮我创建一个只有在给定的邮政编码是英文时才能匹配的正则表达式吗?
编辑 - 解决方案
在几张海报的帮助下,我能够创建以下正则表达式,我已成功测试了1500多个测试用例.
^(AL | B | B [ABDHLNRS] | C [ABHMORTVW] | D [AEHLNTY] | E | E [CNX] | FY | G [LUY] | H [ADGPUX] | I [GM P] | JE | KT | L | L [AENSU] | M | ME | N | N [EGNRW] | O [LX] | P [ELOR] | R [GHM] | S | S [EGKLMNOPRSTW] | T [AFNQ RSW …
可能重复:
英国邮政编码正则表达式(综合)
我有以下代码用于验证javascript中的邮政编码:
function valid_postcode(postcode) {
postcode = postcode.replace(/\s/g, "");
var regex = /[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i;
return regex.test(postcode);
}
Run Code Online (Sandbox Code Playgroud)
测试:
CF47 0HW - Passes - Correct
CF47 OHW - Passes - Incorrect
Run Code Online (Sandbox Code Playgroud)
我做了大量的研究,但似乎无法找到这个常见验证要求的权威正则表达式.有人能指出我正确的方向吗?
我想使用正则表达式从英国邮政编码中提取区号。例如,这将从“SW11 1AW”中删除“SW”。该区域始终是字符串的第一个字符,并且后面始终跟有一个数字。我不能只提取前两个字符,因为有时只有一个字母,例如“E1 4PN”。因此,它只需要从字符串的开头匹配 AZ,直到它遇到数字并仅返回字母。为了便于论证,字符串始终为大写。
谢谢。
我有一个javascript正则表达式验证英国邮政编码.它运作良好,但它没有考虑到有些人在中间用空格写它而其他人没有.我试图添加这个,但不能解决它:S英国邮政编码主要是2个字母后跟1或2个数字,可选的空格和1个数字和2个字母.
这是我的正则表达式,它验证没有空格的邮政编码:
[A-PR-UWYZa-pr-uwyz0-9][A-HK-Ya-hk-y0-9][AEHMNPRTVXYaehmnprtvxy0-9]?[ABEHMNPRVWXYabehmnprvwxy0-9]?{1,2}[0-9][ABD-HJLN-UW-Zabd-hjln-uw-z]{2}|(GIRgir){3} 0(Aa){2})$/g
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑
我改变了正则表达式,因为我意识到一个组缺少小写字符.
有人能告诉我如何匹配1到17之间的数字与正则表达式:
我试过[1-9] | 1 [0-7],但是由于第一部分,它在18中匹配8.
有任何想法吗?我不想要有前导零.
编辑:
问题是我正在尝试验证英国邮政编码,例如:
KW1-17(它可能是KW1,KW2直到KW17)......这只是外部部分.邮政编码可能是KW15 1BM或KW151BM,所以我不能只使用锚来匹配整个字符串......它变得更加复杂.
我有许多餐馆都提供给伦敦的某些邮政编码区域,例如:
EC1WC1WC2W1当有人搜索送到他们家的餐馆时,他们会输入完整的邮政编码.
有些人使用空格正确输入邮政编码,其中一些只输入附加的所有字母和数字,没有空格分隔符.为了协调事物,我在尝试匹配之前删除了邮政编码中的任何空格.
到目前为止,我曾经通过检查它是否以相关的前缀开头来匹配邮政编码到前缀,但后来我意识到这不是万无一失的:
WC1E123 =>正确匹配 WC1W1ABC =>正确匹配 W1W10ABC=>不匹配W1,应该只匹配W10前缀如果没有空格的完整邮政编码,如果它与给定的前缀匹配,同时没有使上面的W1/ W10test 失败,我怎么知道呢?
是否有任何解决方案可以解决问题,这不会强迫客户输入邮政编码,空间位置正确?
我有一些英国邮政编码。然而,它们的格式并不好。有时,它们看起来是正常的邮政编码,例如SW5 2RT,有时中间没有空格,但仍然有效,例如SW52RT。但在某些情况下,由于人为因素,它们是错误的,它们看起来ILovePython像邮政编码一样完全无效。
所以,我想知道如何有效地验证邮政编码(使用 Python)?
非常感谢。
=================================================== ===============
编辑:
感谢您在以下位置的回答:此页面。但似乎只检查邮政编码中的字符是字母还是数字,但不关心组合是否有意义。可能存在错误的邮政编码,例如AA1 1AA通过验证的邮政编码。
我试图R中从地址字符串中提取英国的邮政编码,使用由英国政府提供的正则表达式在这里.
这是我的功能:
address_to_postcode <- function(addresses) {
# 1. Convert addresses to upper case
addresses = toupper(addresses)
# 2. Regular expression for UK postcodes:
pcd_regex = "[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})"
# 3. Check if a postcode is present in each address or not (return TRUE if present, else FALSE)
present <- grepl(pcd_regex, addresses)
# 4. Extract postcodes matching the regular expression for a valid UK postcode
postcodes <- regmatches(addresses, regexpr(pcd_regex, addresses))
# 5. Return NA where an address does not …Run Code Online (Sandbox Code Playgroud) 我想知道如何在地址字符串中查找邮政编码并使用 .
例如
$address = '123 My Street, My Area, My City, AA11 1AA'
我想$postcode = 'AA11 1AA'
我还想删除从地址字符串中找到的邮政编码。
到目前为止我有这个。
$address = strtolower(preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $data[2]));
$postcode = preg_match("/^(([A-PR-UW-Z]{1}[A-IK-Y]?)([0-9]?[A-HJKS-UW]?[ABEHMNPRVWXY]?|[0-9]?[0-9]?))\s?([0-9]{1}[ABD-HJLNP-UW-Z]{2})$/i",$address,$post);
$postcode = $post;
Run Code Online (Sandbox Code Playgroud) 我有一个表[Customer],它有[postcode]和[totalValue]字段.
我需要设计一个查询,返回所有[postcode]的前两个字符,然后是该特定邮政编码组的[totalValue]的SUM(因此NW,L1等各有一个值).
我有这个代码,运行正常:
SELECT LEFT(postcode, 2), SUM(totalValue)
FROM Customer
GROUP BY LEFT(postcode, 2)
Run Code Online (Sandbox Code Playgroud)
...但是我在[客户]中的条目不包含有效的[邮政编码].
有效的英国邮政编码总是一个或两个字母后跟一个数字(例如LE1,L12等).
我想将所有不正确/空/ Null [postcode]记录过滤到一个单独的记录条目中,但这超出了我的技能.
我的问题听起来可能有所不同,但我真的在寻找解决方案.
我在PHP中有一个变量,比方说$check,包含一个字符串.它可以是地址或邮政编码.我们可以在这里申请检查变量是否有邮政编码或地址吗?
编辑:本网站适用于英国
谢谢
regex ×8
postal-code ×7
php ×3
c# ×2
javascript ×2
match ×2
string ×2
validation ×2
numbers ×1
python ×1
r ×1
range ×1
sql ×1
sql-server ×1