【问题标题】:US State Regular expression with case sensitive区分大小写的美国州正则表达式
【发布时间】:2016-04-04 19:32:40
【问题描述】:

我正在使用 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")]

谢谢。

【问题讨论】:

  • 是客户端吗?如果是,则不能使用(?i)。对于服务器端,我认为您可以在模式的开头使用(?i) 修饰符。

标签: regex asp.net-mvc


【解决方案1】:

由于此表达式可用于客户端验证(因此需要 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

【讨论】:

  • 另外,请参阅 ASP.NET herehere 中的不区分大小写验证的更多信息。
【解决方案2】:

上面的列表并不详尽 - 它缺少一些军事缩写。相信我 - 你不会想收到那些试图向军队中的亲人寄东西的爱国家庭的愤怒。

相同的技术 - 我添加了更多。

^(([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]))$

【讨论】:

    【解决方案3】:

    我用过

    [^,]*[A-Z]{2}

    希望它对你有用。

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 2013-11-12
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多