我正在尝试编写一个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
3条答案
按热度按时间fcg9iug31#
加拿大邮政编码不能包含字母D、F、I、O、Q或U,并且不能以W或Z开头:
这将为您工作:
第一个
演示
https://ideone.com/OyVB9h
bjg7j2ky2#
一直都是这样
如果你想把第一个字母限制在只有有效的第一个字母,那么这是好的,但其余的太复杂了,不能有太大的变化。
b5buobof3#
也许它会工作:D