versiones guia español descargar actualizar regex fedex ups

regex - guia - Patrones de expresión regulares para números de seguimiento



qgis manual (15)

Aquí hay algunos números de muestra de los principales operadores de EE. UU .:

USPS: 70160910000108310009 (certified) 23153630000057728970 (signature confirmation) RE360192014US (registered mail) EL595811950US (priority express) 9374889692090270407075 (regular) FEDEX: 810132562702 (all seem to follow same pattern regardless) 795223646324 785037759224 UPS: K2479825491 (UPS ground) J4603636537 (UPS next day express) 1Z87585E4391018698 (regular)

Patrones que estoy usando (código php). Sí, me di por vencido y comencé a probar contra todos los patrones a mi disposición. Tuve que escribir el segundo UPS.

public function getCarrier($trackingNumber){ $matchUPS1 = ''//b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[/dT]/d/d/d ?/d/d/d/d ?/d/d/d)/b/''; $matchUPS2 = ''/^[kKJj]{1}[0-9]{10}$/''; $matchUSPS0 = ''/(/b/d{30}/b)|(/b91/d+/b)|(/b/d{20}/b)/''; $matchUSPS1 = ''/(/b/d{30}/b)|(/b91/d+/b)|(/b/d{20}/b)|(/b/d{26}/b)| ^E/D{1}/d{9}/D{2}$|^9/d{15,21}$| ^91[0-9]+$| ^[A-Za-z]{2}[0-9]+US$/i''; $matchUSPS2 = ''/^E/D{1}/d{9}/D{2}$|^9/d{15,21}$/''; $matchUSPS3 = ''/^91[0-9]+$/''; $matchUSPS4 = ''/^[A-Za-z]{2}[0-9]+US$/''; $matchUSPS5 = ''/(/b/d{30}/b)|(/b91/d+/b)|(/b/d{20}/b)|(/b/d{26}/b)| ^E/D{1}/d{9}/D{2}$|^9/d{15,21}$| ^91[0-9]+$| ^[A-Za-z]{2}[0-9]+US$/i''; $matchFedex1 = ''/(/b96/d{20}/b)|(/b/d{15}/b)|(/b/d{12}/b)/''; $matchFedex2 = ''//b((98/d/d/d/d/d?/d/d/d/d|98/d/d) ?/d/d/d/d ?/d/d/d/d( ?/d/d/d)?)/b/''; $matchFedex3 = ''/^[0-9]{15}$/''; if(preg_match($matchUPS1, $trackingNumber) || preg_match($matchUPS2, $trackingNumber)) { echo(''UPS''); $carrier = ''UPS''; return $carrier; } else if(preg_match($matchUSPS0, $trackingNumber) || preg_match($matchUSPS1, $trackingNumber) || preg_match($matchUSPS2, $trackingNumber) || preg_match($matchUSPS3, $trackingNumber) || preg_match($matchUSPS4, $trackingNumber) || preg_match($matchUSPS5, $trackingNumber)) { $carrier = ''USPS''; return $carrier; } else if (preg_match($matchFedex1, $trackingNumber) || preg_match($matchFedex2, $trackingNumber) || preg_match($matchFedex3, $trackingNumber)) { $carrier = ''FedEx''; return $carrier; } else if (0){ $carrier = ''DHL''; return $carrier; } return; }

¿Alguien sabe un buen lugar o patrones para verificar qué número de seguimiento de la compañía es el número de seguimiento dado para un paquete? Idea es Después de escanear un código de barras para un paquete, verifique el número de rastreo con patrones y muestre a qué compañía fue enviado.


Aquí hay una expresión regular actualizada para UPS (funciona con números de seguimiento regulares y de tipo de innovación de correo):

/ b (1Z? [0-9A-Z] {3}? [0-9A-Z] {3}? [0-9A-Z] {2}? [0-9A-Z] {4}? [ 0-9A-Z] {3}? [0-9A-Z] | [/ dT] / d / d / d? / D / d / d / d? / D / d / d | / d / d / d? / d / d / d? / d / d / d | / d {22,34}) / b


Creo que FedEx tiene 12 dígitos:

^[0-9]{12}$



En caso de que ayude a alguien más a buscar esto, aquí hay una clase de Python simple que resuelve formatos comunes: Gist # 541851


Estos son los que ahora uso en mi aplicación Java. Estos están determinados por mi experiencia en la succión de números de seguimiento de correos electrónicos de confirmación de envío de un montón de servicios de envío directo. Acabo de crear un nuevo USPS uno desde el principio, ya que ninguno de los que encontré funcionó para algunos de mis números basados ​​en números de ejemplo en el sitio de USPS. Estos solo funcionan para los códigos de seguimiento de EE. UU. Porque solo vendemos en los EE. UU.

private final Pattern UPS_TRACKING_NUMBER = Pattern.compile("[^A-Za-z0-9](1Z[A-Za-z0-9]{6,})", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private final Pattern FEDEX_TRACKING_NUMBER = Pattern.compile("//b((96|98)//d{18,20}|//d{15}|//d{12})//b", Pattern.MULTILINE); private final Pattern USPS_TRACKING_NUMBER = Pattern.compile("//b(9[2-4]//d{20}(?:(?:EA|RA)//d{9}US)?|(?:03|23|14|70)//d{18})//b", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);


He estado investigando esto por un tiempo y los he basado principalmente en las respuestas aquí.
Estos deberían cubrir todo, sin ser demasiado indulgentes.
UPS:
/^(1Z/s?[0-9A-Z]{3}/s?[0-9A-Z]{3}/s?[0-9A-Z]{2}/s?[0-9A-Z]{4}/s?[0-9A-Z]{3}/s?[0-9A-Z]$|[/dT]/d{3}/s?/d{4}s?/d{3})$/i

USPS:
/^(EA|EC|CP|RA)/d{9}(/D{2})?$|^(7/d|03|23|91)/d{2}/s?/d{4}/s?/d{4}/s?/d{4}/s?/d{4}(/s/d{2})?$|^82/s?/d{3}/s?/d{3}/s?/d{2}$/i

FEDEX:
/^(((96|98)/d{5}/s?/d{4}$|^(96|98)/d{2})/s?/d{4}/s?/d{4}(/s?/d{3})?)$/i


Los uso en una aplicación de eBay que escribí:

USPS nacional:

/^91[0-9]+$/

USPS Internacional:

/^[A-Za-z]{2}[0-9]+US$/

FedEx:

/^[0-9]{15}$/

Sin embargo, esto podría ser específico de eBay / Paypal, ya que todas las etiquetas nacionales de USPS comienzan con "91". Todas las etiquetas de USPS International comienzan con dos caracteres y terminan con "US". Hasta donde yo sé, FedEx solo usa 15 dígitos aleatorios.

(Tenga en cuenta que estas expresiones regulares suponen que se han eliminado todos los espacios. Sin embargo, sería bastante fácil permitir espacios)


Necesito verificar SOLO los números de seguimiento del Servicio Postal de los Estados Unidos (USPS). WikiAnswers dice que mis formatos de número son los siguientes:

USPS solo ofrece seguimiento con correo urgente, generalmente comienza con una "E", otra letra, seguida de 9 dígitos y dos letras más. USPS tiene "números de etiqueta" para otros servicios que tienen entre 16 y 22 dígitos de longitud.

http://wiki.answers.com/Q/How_many_numbers_in_a_USPS_tracking_number

Estoy agregando que los números de Etiqueta comienzan con un "9" ya que todos los que tengo de envíos personales en los últimos 2 años comienzan con un 9.

Entonces, asumiendo que WikiAnswers sea correcto, aquí está mi expresión regular que coincide con ambos:

/^E/D{1}/d{9}/D{2}$|^9/d{15,21}$/

Es bastante simple. Aquí está el desglose:

^E - Begins w/ E (For express number) /D{1} - followed by another letter /d{9} - followed by 9 numbers /D{2} - followed by 2 more letters $ - End of string | - OR ^9 - Basic Track & Ship Number /d{15,21} - followed by 15 to 21 numbers $ - End of string

Usando el probador de expresiones regulares de www.gummydev.com, este patrón coincide con mis dos cadenas de prueba:

CORREO EXPRESS: EK225651436US

NÚMERO DE ETIQUETA: 9410803699300003725216

** Nota: si está usando ColdFusion (Yo soy), elimine el primer y último "/" del patrón


Presioné Royal Mail para obtener una expresión regular para las referencias de seguimiento de entrega grabada y entrega especial, pero no llegué muy lejos. Incluso un conjunto completo de reglas para que yo pudiera hacer lo mío estaba más allá de ellos.

Básicamente, incluso después de haber tomado alrededor de una semana y haber regresado con varias combinaciones de letras que denotan el tipo de servicio, pude brindar ejemplos de nuestra experiencia que demostraban que había combinaciones adicionales que obviamente eran válidas pero que no se habían documentado.

Las referencias siguen el formato internacional aparentemente estándar que creo que describiría el Jefe /^[A-Za-z]{2}[0-9]+GB$/ regex:

XX123456789GB

Aunque este parece ser un formato estándar, es decir, la mayoría de los correos internacionales tienen el mismo formato en el que las dos últimas letras indican el país de origen, no he podido averiguar más acerca de este "estándar" ni de dónde proviene. (¡cualquier aclaración es bienvenida!).

Particularmente para Royal Mail parece ser el uso de las dos primeras letras para denotar el nivel de servicio. He logrado compilar una lista de prefijos que denotan Entrega Especial, pero no estoy convencido de que esté 100% completa:

AD AE AF AJ AK AR AZ BP CX DS EP HC HP KC KG KH KI KJ KQ KU KV KW KY KZ PW SA SC SG SH SI SJ SL SP SQ SU SW SY SZ TX WA WH XQ WZ

Sin uno de estos prefijos, el servicio es Entrega grabada, que proporciona confirmación de entrega pero no seguimiento.

En general, parece que la inclusión de un S, X o Z denota un nivel de servicio más alto y no creo que haya visto un artículo de entrega grabada normal con ninguna de esas letras en el prefijo.

Sin embargo, como puede ver, hay muchos prefijos que deberían probarse si el nivel de servicio se verificara usando expresiones regulares, y dado el hecho de que Royal Mail parece incapaz de proporcionar un conjunto completo de reglas, entonces puede intentar probar el nivel de servicio. fútil.


Puedes probar estos (no garantizados):

UPS:

/b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[/dT]/d/d/d ?/d/d/d/d ?/d/d/d)/b

UPS:

/b(1Z ?/d/d/d ?/d/w/w ?/d/d ?/d/d/d/d ?/d/d/d ?/d|[/dT]/d/d/d ?/d/d/d/d ?/d/d/d)/b

USPost:

/b(/d/d/d/d ?/d/d/d/d ?/d/d/d/d ?/d/d/d/d ?/d/d/d/d ?/d/d|/d/d/d/d ?/d/d/d/d ?/d/d/d/d ?/d/d/d/d ?/d/d/d/d)/b

Pero por favor prueba antes de usarlos. Recomiendo RegexBuddy .


Sé que ya hay muchas respuestas y que esto se preguntó hace mucho tiempo, pero no veo una sola que aborde todos los posibles números de seguimiento de USPS con una sola expresión.

Aquí es lo que se me ocurrió:

((/d{4})(/s?/d{4}){4}/s?/d{2})|((/d{2})(/s?/d{3}){2}/s?/d{2})|((/D{2})(/s?/d{3}){3}/s?/D{2})

Véalo trabajar aquí: http://regexr.com/3e61u


Solo pensé en publicar una actualización sobre esto ya que estoy trabajando en esto para hacer coincidir a través de jquery y seleccionar automáticamente la compañía de envío adecuada. Recopilé una lista de expresiones regulares para mi proyecto y probé muchos números de seguimiento en UPS FedEX y USPS.

Si encuentras algo que no concuerda, por favor avísame aquí a través de los comentarios y trataré de hacerlo también.

UPS:

//b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[/dT]/d/d/d ?/d/d/d/d ?/d/d/d)/b/

FedEX: (3 diferentes)

/(/b96/d{20}/b)|(/b/d{15}/b)|(/b/d{12}/b)/ //b((98/d/d/d/d/d?/d/d/d/d|98/d/d) ?/d/d/d/d ?/d/d/d/d( ?/d/d/d)?)/b/ /^[0-9]{15}$/

USPS: (4 diferentes)

/(/b/d{30}/b)|(/b91/d+/b)|(/b/d{20}/b)/ /^E/D{1}/d{9}/D{2}$|^9/d{15,21}$/ /^91[0-9]+$/ /^[A-Za-z]{2}[0-9]+US$/

Tenga en cuenta que yo no presenté esto yo mismo. Simplemente busqué y compilé la lista de diferentes fuentes, incluidas algunas que pueden haberse mencionado aquí.

Gracias

Editar: se corrigió el delimitador de final faltante.


También me encontré con números de seguimiento de FedEx con 22 dígitos recientemente, ¡así que ten cuidado! Aún no he encontrado una buena referencia para el formato general de FedEx.

Ejemplo de FedEx #: 9612019059803563050071


Tarde en la fiesta sin embargo, el siguiente también funcionará con 26 números de USPS char.

/(/b/d{30}/b)|(/b91/d+/b)|(/b/d{20}/b)|(/b/d{26}/b)|^E/D{1}/d{9}/D{2}$|^9/d{15,21}$|^91[0-9]+$|^[A-Za-z]{2}[0-9]+US$/i