Шаблоны регулярных выражений для номеров отслеживания - PullRequest
55 голосов
/ 06 марта 2009

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

Ответы [ 16 ]

0 голосов
/ 04 декабря 2018

Я работаю в приложении Angular2 + и просто собираю компонент для обработки общих номеров отслеживания в США. Он проверяет их, используя стандартный JavaScript RegExp, который я собрал из этого ресурса ЗДЕСЬ & ЗДЕСЬ и устанавливает href для тега привязки с URL-адресом ссылки отслеживания, если это хорошо. Вам не нужно использовать Angular или TypeScript, чтобы легко адаптировать это к вашему приложению. Я проверил это с разными фиктивными числами и до сих пор работал динамически. Обратите внимание, что вы также можете отключить значение NULL в последнем операторе else с помощью встроенного URL-адреса с комментариями, и он отправит вас на поиск в Google.

Любые отзывы (или если ваши номера отслеживания не работают), пожалуйста, дайте мне знать, я обновлю ответ. Спасибо!

ИСПОЛЬЗОВАНИЕ В HTML:

<app-tracking-number [trackNum]="myTrackingNumberInput"></app-tracking-number>

КОМПОНЕНТ .TS

import { Component, OnInit, Input } from '@angular/core';

@Component({
  selector: 'app-tracking-number',
  templateUrl: './tracking-number.component.html',
  styleUrls: ['./tracking-number.component.scss']
})
export class TrackingNumberComponent implements OnInit {
    @Input() trackNum:string;
    trackNumHref:string = null;
    // Carrier tracking numbers patterns from https://www.iship.com/trackit/info.aspx?info=24 AND https://www.canadapost.ca/web/en/kb/details.page?article=how_to_track_a_packa&cattype=kb&cat=receiving&subcat=tracking
    isUPS:RegExp = new RegExp('^1Z[A-H,J-N,P,R-Z,0-9]{16}$');               // UPS tracking numbers usually begin with "1Z", contain 18 characters, and do not contain the letters "O", "I", or "Q".
    isFedEx:RegExp = new RegExp('^[0-9]{12}$|^[0-9]{15}$');                 // FedEx Express tracking numbers are normally 12 digits long and do not contain letters AND FedEx Ground tracking numbers are normally 15 digits long and do not contain letters.
    isUSPS:RegExp = new RegExp('^[0-9]{20,22}$|^[A-Z]{2}[0-9,A-Z]{9}US$');  // USPS Tracking numbers are normally 20-22 digits long and do not contain letters AND USPS Express Mail tracking numbers are normally 13 characters long, begin with two letters, and end with "US".
    isDHL:RegExp = new RegExp('^[0-9]{10,11}$');                            // DHL tracking numbers are normally 10 or 11 digits long and do not contain letters.
    isCAPost:RegExp = new RegExp('^[0-9]{16}$|^[A-Z]{2}[0-9]{9}[A-Z]{2}$'); // 16 numeric digits (0000 0000 0000 0000) AND 13 numeric and alphabetic characters (AA 000 000 000 AA).

    constructor() { }

    ngOnInit() {
        this.setHref();
    }

    setHref() {
        if(!this.trackNum) this.trackNumHref = null;
        else if(this.isUPS.test(this.trackNum)) this.trackNumHref = `https://wwwapps.ups.com/WebTracking/processInputRequest?AgreeToTermsAndConditions=yes&loc=en_US&tracknum=${this.trackNum}&Requester=trkinppg`;
        else if(this.isFedEx.test(this.trackNum)) this.trackNumHref = `https://www.fedex.com/apps/fedextrack/index.html?tracknumber=${this.trackNum}`;
        else if(this.isUSPS.test(this.trackNum)) this.trackNumHref = `https://tools.usps.com/go/TrackConfirmAction?tLabels=${this.trackNum}`;
        else if(this.isDHL.test(this.trackNum)) this.trackNumHref = `http://www.dhl.com/en/express/tracking.html?AWB=${this.trackNum}&brand=DHL`;
        else if(this.isCAPost.test(this.trackNum)) this.trackNumHref =`https://www.canadapost.ca/trackweb/en#/search?searchFor=${this.trackNum}`;
        else this.trackNumHref = null; // Google search as fallback... `https://www.google.com/search?q=${this.trackNum}`;
    }

}

КОМПОНЕНТ .HTML

<a *ngIf="trackNumHref" [href]="trackNumHref" target="_blank">{{trackNum}}</a>
<span *ngIf="!trackNumHref">{{trackNum}}</span>
0 голосов
/ 06 сентября 2016

Я знаю, что ответов уже много, и что об этом спрашивали давным-давно, но я не вижу ни одного ответа на все возможные номера отслеживания USPS одним выражением.

Вот что я придумал:

((\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})

Посмотрите, как работает здесь: http://regexr.com/3e61u

0 голосов
/ 26 января 2016

Поздно к вечеринке, однако, ниже будет работать с 26 символами USPS также.

/(\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
0 голосов
/ 10 июля 2013

Вот регулярное выражение для UPS (работает с обычными номерами и номерами отслеживания типа Mail Innovation):

\ 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

0 голосов
/ 10 мая 2010

Недавно я также обнаружил номера отслеживания из FedEx с 22 цифрами, так что следите! Я не нашел ни одной хорошей ссылки на общий формат FedEx.

FedEx Пример №: 9612019059803563050071

0 голосов
/ 27 февраля 2010

Я считаю, что FedEx 12 цифр:

^[0-9]{12}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...