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/

相关文章:

c# - 这两个使用 using 关键字的实现之间的差异

java - 为什么拆分 `(?!^)` 和 `(?<!^)` 会产生相同的答案?

c# - C++ std::regex 错误地验证整数

regex - VBA正则表达式问题

python - scrapy 正则表达式也返回不匹配的 url

php - 如何使用 PHP 格式的 Mongo 正则表达式转义特殊字符

c# - 在运行时配置 ASP.NET session 状态

c# - 如何在运行时强制预加载?

c# - 为 IEnumerable<TModel> 编写 MVC HtmlHelper 以显示 HTML 表

c# - 开发 express MVVM : Injected ViewModel is also created by XAML.