regex US State区分大小写的正则表达式

gcuhipw9  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(96)

我正在开发一个ASP.NETMVC应用程序,我的模型有一个正则表达式来验证US状态。
如果用户输入的都是大写字母,这个正则表达式可以正常工作,但是对于小写字母/ Camel 字母的情况就不起作用了。

[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")]

如何修复正则表达式以匹配美国州,而不考虑大小写?

gz5pxeao

gz5pxeao1#

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

xjreopfe

xjreopfe2#

上面的列表并不详尽-它缺少一些军事缩写。相信我-你不想收到爱国家庭试图发送东西给他们在军队中的亲人的愤怒。
同样的技术-我增加了几个。

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

dkqlctbz3#

我用过
[^,]*[A-Z]{2}
希望对你有用

相关问题