我正在开发一个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")]
如何修复正则表达式以匹配美国州,而不考虑大小写?
3条答案
按热度按时间gz5pxeao1#
由于这个表达式可以用于客户端验证(因此需要ECMA正则表达式语法,即JavaScript兼容的正则表达式),因此不能使用像
(?i)
这样的内联修饰符,更不用说切换版本(?i:...)
了。你必须将每个字母与对应的字母加倍:
参见demo
xjreopfe2#
上面的列表并不详尽-它缺少一些军事缩写。相信我-你不想收到爱国家庭试图发送东西给他们在军队中的亲人的愤怒。
同样的技术-我增加了几个。
dkqlctbz3#
我用过
[^,]*[A-Z]{2}
希望对你有用