У нас есть страница на C # ASP.Net, где клиент вводит адрес, на котором почтовое отделение запрещено, поскольку мы используем UPS для доставки этих товаров. Клиенты - творческие люди, и они придумывают творческие средства маркировки P.O. Box.
У нас есть шаблон 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
Эти примеры на самом деле являются ценностями, которые пользователи, по своей щедрой природе, предоставили нам. ;)
Я всегда готов к упрощению.