Python,加拿大地址RegEx验证

iecba09b  于 2022-11-18  发布在  Python
关注(0)|答案(3)|浏览(120)

我正在尝试编写一个Python脚本,使用RegEx验证加拿大地址。
例如,以下地址有效:

" 123 4th Street, Toronto, Ontario, M1A 1A1 "

但这一条是无效的:

" 56 Winding Way, Thunder Bay, Ontario, D56 4A3"

我尝试了许多不同的组合,以保持加拿大邮政编码的规则,例如最后6个字母数字位不能包含字母(D、F、I、O、Q、U、W、Z),但所有条目似乎都无效。我尝试了“('^[ABCEGHJKLMNPRSTVXY]{1}\d {1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$')“,但仍然无效
这是我目前所拥有

import re

postalCode = " 123 4th Street, Toronto, Ontario, M1A 1A1 "

#read First Line
line = postalCode

#Validation Statement
test=re.compile('^\d{1}[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$')

if test.match(line) is not None:
    print 'Match found - valid Canadian address: ', line
else:
    print 'Error - no match - invalid Canadian address:', line
fcg9iug3

fcg9iug31#

加拿大邮政编码不能包含字母D、F、I、O、Q或U,并且不能以W或Z开头:
这将为您工作:
第一个

演示

https://ideone.com/OyVB9h

bjg7j2ky

bjg7j2ky2#

一直都是这样

/[A-Z][0-9][A-Z] ?[0-9][A-Z][0-9]/

如果你想把第一个字母限制在只有有效的第一个字母,那么这是好的,但其余的太复杂了,不能有太大的变化。

b5buobof

b5buobof3#

[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d

也许它会工作:D

相关问题