Domanda

Ho un cliente che spedisce tramite UPS e quindi non può consegnare alle caselle postali. Vorrei essere in grado di convalidare i campi degli indirizzi dei clienti al fine di impedire loro di inserire gli indirizzi che includono una casella postale. Sarebbe meglio se questo fosse implementato come regex in modo da poter utilizzare un controllo di convalida regex sul lato client (ASP.NET).

Mi rendo conto che probabilmente non c'è modo di ottenere un tasso di rilevamento del 100%, sto solo cercando qualcosa che funzioni la maggior parte del tempo.

È stato utile?

Soluzione

Questo dovrebbe iniziare. Verifica se il campo Indirizzo corrisponde a questa regex.

"^P\.?\s?O\.?\sB[Oo][Xx]."

Traduzione in inglese: si tratta di una P all'inizio della riga, seguita da un punto e uno spazio facoltativi, seguiti da una O, seguiti da un periodo opzionale, seguito da uno spazio, seguito da " Box " ;, seguito da qualsiasi altra cosa.

Altri suggerimenti

UPS ha anche strumenti che puoi integrare per fare questo ... in questo modo puoi verificare un indirizzo esattamente se spediranno o meno, quali sarebbero i costi, gli orari, ecc. Suggerisco di visitare l'UPS IT Pagina delle soluzioni per ulteriori informazioni.

Potrebbe essere meglio mettere un disclaimer sulla pagina avvertendo che non è possibile spedire alle caselle postali, invece di convalidare l'input.

Molto probabilmente se crei una regex che cattura la maggior parte del P.O. Scenari box, c'è una buona probabilità che catturi anche cose che non avevi intenzione (ad esempio un cliente con un nome di strada contenente le lettere 'p' 'o' e 'box')

Comincerei con una regex ala Lizard (ma uso il flag "ignore case " :) :), test su dati storici, quindi ripeterei come vedi quali inclusioni ed esclusioni non valide vedi nei test.

La maggior parte dei fornitori di servizi di spedizione (ad esempio FedEx) convaliderà l'indirizzo di spedizione. Ad esempio, con i servizi Web FedEx, viene effettuata una chiamata per convalidare un indirizzo di spedizione e ottenere il costo stimato. Questo non solo garantisce che l'indirizzo non sia una casella postale, ma assicura anche che il resto dell'indirizzo sia valido.

Per quanto riguarda il commento del PO alla risposta di Jason Coco:

Dato che sei in grado di aggiungere la convalida regex all'indirizzo di spedizione, presumo che tu abbia il controllo dell'applicazione (vale a dire, hai la fonte e puoi modificarla). In tal caso, dovresti avere la possibilità, al ricevimento dei dati inviati, verificare se devono essere spediti tramite USPS, FedEx o UPS e inviare una richiesta al validatore dell'indirizzo specifico del corriere appropriato, ottenendo tutti i benefici suggeriti nella risposta di Jason.

Rendendolo specifico per il mittente, ciò consentirebbe anche di evitare l'implementazione di regole a misura unica, come "nessuna casella postale perché UPS non le consegna", anche se l'utente può selezionare corrieri non UPS che effettuano consegne a caselle postali.

Che cosa succede se non inizia con " PO Box .. " o " P.O. Box " ?

Esempio:

John Schmidt | Casella postale Silver Valley 3901 | Whereswaldoville, SI. 78946

Ho usato un evento onblur per il campo dell'indirizzo per usare una funzione javascript, indexOf, per riconoscere input.toUpperCase " PO BOX " || & Quot; P.O " questo è > = 0.

Se una di queste due ricerche non viene trovata, il ritorno è -1, altrimenti restituirà la posizione iniziale della stringa che sarà sempre 0 o più.

Questo assicurerà che digitando pigro, 'po box', 'p.o box' e così come 'p.o. la casella "verrà riconosciuta. Suppongo che potresti aggiungere 'po. box "pure.

Ad ogni modo, la condizione attiva un messaggio discreto per mostrare che "Non possiamo spedire a un indirizzo di casella postale. " È una caratteristica di non vederlo se non si applica a te. Altrimenti, per gli utenti che non hanno js o css abilitato, vedranno solo il messaggio. L'unico fallimento di questo aggraziato degrado è se un utente ha css, ma non js abilitato (dove semplicemente non vedrà affatto il messaggio). Ho trovato la soluzione solo oggi, ma se penso a un modo migliore, tornerò a pubblicarla qui.

Sfortunatamente, il software online UPS consente a P.O. Scatole da attraversare, ma le soffoceranno una volta che sono nel canale di spedizione. Nel nostro caso, il nostro tasso di abbandono del carrello è aumentato quando abbiamo cercato di prevenire con garbo P.O. Scatole. Abbiamo trovato molto più conveniente lasciarlo da solo, accettare la vendita, portarlo all'attenzione del servizio clienti e lasciarlo risolvere. Naturalmente, se si ottiene un'alta incidenza di caselle postali, questo potrebbe non essere il caso per voi.

Dalla domanda originale:

  

Mi rendo conto che probabilmente non c'è modo di ottenere un tasso di rilevamento del 100%, ...

In realtà, c'è.

Se l'indirizzo viene prima convalidato e standardizzato nel formato USPS utilizzando uno strumento di convalida dell'indirizzo (la società per cui lavoro produce YAddress ), quindi tutti PO Gli indirizzi di casella senza eccezione verranno scritti "PO BOX ...". Dopodiché puoi confrontarli con stringhe per una corrispondenza esatta con una precisione del 100%.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top