Regex проверяет адресную строку, чтобы не содержать шаблонов PO Box - PullRequest
0 голосов
/ 18 октября 2018

Я использую Laravel regex validation в поле адреса, предоставленном пользователями.

Я нашел несколько сообщений, которые помогают проверить строку адреса, чтобы быть действительным почтовым ящиком, как здесь или здесь , но мне нужно сделать обратное и убедиться, что предоставленная строка не является почтовым ящиком.

PS Мне не нужно выполнять проверку адреса, просто хочу убедиться, что это что-нибудьно почтовый ящик.

Я нашел это правило довольно полезным, поскольку оно проверяет наличие номера почтового ящика

/^\s*(.*((p|post)[-.\s]*(o|off|office)[-.\s]*(b|box|bin)[-.\s]*)|.*((p|post)[-.\s]*(o|off|office)[-.\s]*)|.*((p|post)[-.\s]*(b|box|bin)[-.\s]*)|(box|bin)[-.\s]*)(#|n|num|number)?\s*\d+/i

Может ли кто-нибудь помочь мне создать противоположное выражение для этого или чего-то подобного?

Я подозреваю, что должен использовать негативную перспективу ?!

1 Ответ

0 голосов
/ 19 октября 2018

Решено с помощью регулярных выражений negative lookahead ?!

/^(?!.*(?:(.*((p|post)[-.\s]*(o|off|office)[-.\s]*(box|bin)[-.\s]*)|.*((p |post)[-.\s]*(box|bin)[-.\s]*)))).*$/i

Это правило не требует наличия номера почтового ящика.

Это примеры, которые будут проходить:

        "The Postal Road",
        "Box Hill",
        "123 Some Street",
        "Controller's Office",
        "pollo St.",
        "123 box canyon rd",
        "777 Post Oak Blvd",
        "PSC 477 Box 396",
        "RR 1 Box 1020",
        "Coop services",
        "65 Brook Ave Ste 1P",
        "pacific city",
        "orange county",
        "obox",
        "pbox",
        "party house",
        "p shorty",
        "something pacif pobo",
        "po helpkline box",
        "po ferrirs",
        "panther boxing",
        "box center",
        "post office",
        "Post",
        "porceline"

Те не пройдут проверку

        "post office box",
        "POBOX",
        "po box",
        "POBox12234",
        "p o box",
        "P.O.Box",
        "HC73 P.O. Box 217",
        "P O Box125",
        "P. O. Box",
        "P.O. Box 123",
        "P.O. Box",
        "PO Box N",
        "PO Box",
        "PO-Box",
        "POBOX123",
        "Po Box",
        "Post Box 123",
        "Post Office Box 123",
        "Post Office Box",
        "p box",
        "p-o box",
        "p-o-box",
        "p.o box",
        "p.o. box",
        "p.o.-box",
        "po box 123",
        "po box",
        "po-box",
        "pobox",
        "pobox123",
...