Recientemente hice esta expresión regular para validar AFO, DPO, FPO y direcciones de PO Box regulares:

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

Funcionaba perfectamente hasta que un usuario insertó "13605 NE 245th Lane OR PO box 55" como la dirección postal. USPS considera que esta es una dirección válida, pero desafortunadamente esto falla en mi Regex. No puedo entender cómo alterar la expresión regular para captar el apartado de correos dentro de la dirección cuando un usuario enumera su dirección postal habitual primero y la parte del apartado de correos en segundo lugar. Lo atrapa cuando es al revés.

¿Alguna idea de cómo alterar la expresión regular para dar cuenta de esta nueva situación pero también mantener su funcionalidad actual? Estoy abierto a otras sugerencias o tal vez incluso a usar dos expresiones regulares diferentes. Gracias.

2
Seth Rumbaugh 29 oct. 2019 a las 23:50

1 respuesta

La mejor respuesta

Tratar:

/([afd]?)(((p[\s\.]?[o\s][\.]?)\s?)|(post\s?office\s?))((box|bin|b\.?)?\s?(num|number|#)?\s?\d+)/i

Eliminar ^ ya que PO box 55 no está al principio de la línea de dirección

Ejemplo:

Regular expression visualization

Demo de Debuggex

0
Tim.Tang 29 oct. 2019 a las 21:34