【发布时间】:2011-03-10 18:21:03
【问题描述】:
我们有一个 C# ASP.Net 页面,客户在该页面中输入不允许邮局的地址,因为我们使用 UPS 运送这些物品。客户是有创造力的人,他们想出创造性的方法来标记 P.O.盒子。
我们有这个 RegEx 模式,它主要满足我们的需要。
(?i)\b[p]*(?:ost)*\.*\s*[o0]*(?:ffice)*\.*\s+?([b]*[o0]*[x])
这种模式几乎适用于我们存档的所有案例:
P.O. box 17432
poSt oFFice box 11111
box 222
p0 box 222
#343 po box
#po box 343
不匹配(这是正确的行为):
1234 Main St (Shouldn't match, but we have it in there for a negative test case.)
但是,它也不匹配这些,它应该:
p0b 222
POB 1112
这些样本实际上是用户所拥有的价值,他们慷慨地向我们提供了这些价值。 ;)
我总是倾向于简化。
【问题讨论】:
-
他们为什么要这样做?因为他们试图超越系统。当验证器被触发时,它会以大红色字母显示“没有邮政信箱”。作为记录,我们经常提醒客户,不允许使用邮政信箱。
标签: c# regex validation