我有一个 ASP.NET/C# 应用程序,它有一个表单字段,要求用户提供他们的位置,我们获取并传递给 Bing map 以进行地理编码。出于某种原因,我的客户希望将输入限制为这三种格式:
San Francisco, CA 91111
San Francisco, CA
91111
但是,我知道他们最终也会要求支持加拿大邮政编码。
当然,他们在项目启动前 2 小时要求这样做,所以我真的没有太多时间自己研究正则表达式并弄清楚(我的正则表达式很糟糕)所以我想我会在这里问。
谁能想出一个正则表达式,我可以用它来验证它是否符合上述三种格式中的一种,并支持加拿大邮政编码(不必支持 ZIP+4)。
最佳答案
我试过了,它似乎适用于您指定的所有情况:
var pattern =
@"
(^[\w\s]+,\s\w{2}$)| # City, State
(^[\w\s]+,\s\w{2}\s\d{5}$)| # City, State and US PostCode
(^[\w\s]+,\s\w{2}\s(\w\d\w\s?\d\w\d)$)| # City, State and Canada PostCode
(^\d{5}$)| # US PostCode
(^\w\d\w\s?\d\w\d$) # Canada PostCode";
使用此正则表达式时,请确保您:
- 指定
RegexOptions.IgnorePatternWhitespace
或
- 使用精简版(可读性较差):
(^[\w\s]+,\s\w{2}$)|(^[\w\s]+,\s\w{2}\s\d{5}$)| (^[\w\s]+,\s\w{2}\s(\w\d\w\s?\d\w\d)$)|(^\d{5}$)|( ^\w\d\w\s?\d\w\d$)
关于c# - 用于验证城市/州/ zip 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686395/