regex - 美国州正则表达式,区分大小写

标签 regex asp.net-mvc

我正在使用 ASP.NET MVC 应用程序,模型具有以下正则表达式来验证美国各州。

如果用户输入全部大写,这一个工作正常,但不适用于小写/驼峰情况。

[RegularExpression(@"^((A[ELKSZR])|(C[AOT])|(D[EC])|(F[ML])|(G[AU])|(HI)|(I[DLNA])|(K[SY])|(LA)|(M[EHDAINSOT])|(N[EVHJMYCD])|(MP)|(O[HKR])|(P[WAR])|(RI)|(S[CD])|(T[NX])|(UT)|(V[TIA])|(W[AVIY]))$", ErrorMessage = "Invalid State")]
        public string State { get; set; }

我试过这个,但没有成功。

// [RegularExpression(@"^(?-i:A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$", ErrorMessage = "Invalid State")]

谢谢。

最佳答案

由于此表达式可用于客户端验证(因此需要 ECMA 正则表达式语法,即与 JavaScript 兼容的正则表达式),因此您不能使用像 (?i) 这样的内联修饰符,更不用说了切换版本 (?i:...)

您必须将每个字母与对应的小写字母加倍:

^(([Aa][EeLlKkSsZzRr])|([Cc][AaOoTt])|([Dd][EeCc])|([Ff][MmLl])|([Gg][AaUu])|([Hh][Ii])|([Ii][DdLlNnAa])|([Kk][SsYy])|([Ll][Aa])|([Mm][EeHhDdAaIiNnSsOoTt])|([Nn][EeVvHhJjMmYyCcDd])|([Mm][Pp])|([Oo][HhKkRr])|([Pp][WwAaRr])|([Rr][Ii])|([Ss][CcDd])|([Tt][NnXx])|([Uu][Tt])|([Vv][TtIiAa])|([Ww][AaVvIiYy]))$

参见 demo

关于regex - 美国州正则表达式,区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536069/

相关文章:

asp.net-mvc - 我可以在 Azure 函数连接字符串部分中使用测试连接字符串和生产连接字符串吗?

asp.net-mvc - 为什么我的 Crystal Report 和 Viewer 在 MVC 应用程序的 Web 表单上不可见?

regex - ASP.NET MVC 正则表达式路由约束

javascript - 使用正则表达式进行邮件交换服务器字符串验证

c# - 从 C# 中 IPv6 安全的 IP 字符串中删除端口

asp.net-mvc - 将匿名对象从 View 传递到局部 View

javascript - 打开网页并使用 JavaScript 解析它

MySQL - 查找围绕搜索关键字的单词

即使在困惑的字符串中也能找到 YYYY-MM 的 Java 正则表达式

asp.net-mvc - 如何将MVC 3项目更新为jQuery 1.6?