c# - 用于验证城市/州/ zip 的正则表达式

标签 c# regex

我有一个 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/

相关文章:

regex - Azure 应用程序网关自定义 header 规则

c# - 我应该使用什么类型来指示参数是 C# 中的文件名?

c# - Dapper 映射结果列表

javascript - 我可以在 JavaScript 中创建一个正则表达式来验证特定的数学公式 - 字母和括号,其中不应嵌套括号

JavaScript 正则表达式模式与变量连接

regex - 我对正则表达式有些担心

c# - 将SQL转MySQL C#监控程序

c# - 使用 JSON.Net 序列化数组时忽略重复项

c# - C# 确定谁最后修改了文件

java - 使用正则表达式创建吗啡查询