是否有人知道检查哪个公司跟踪号是包的给定跟踪号的好地方或模式.想法是在扫描条形码后查找带有图案的包裹检查跟踪编号,并显示它所运送的公司.
Adi*_*dil 43
我想我会发布一个更新,因为我正在通过jquery进行匹配并自动选择合适的运输公司.我为我的项目编制了一个匹配的正则表达式列表,我测试了UPS FedEX和USPS中的大量跟踪数字.
如果您遇到不匹配的内容,请通过评论告诉我这里,我也会尝试提供.
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/
Run Code Online (Sandbox Code Playgroud)
FedEX :( 3个不同的人)
/(\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}$/
Run Code Online (Sandbox Code Playgroud)
USPS :( 4种不同的)
/(\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$/
Run Code Online (Sandbox Code Playgroud)
请注意,我自己没有拿出这些.我只是搜索并编译了不同来源的列表,包括可能在这里提到的一些.
谢谢
编辑:修复了缺少结束分隔符.
Mat*_*ber 12
我需要一些更强大的东西来满足我的用例。我不断遇到不完整、不正确或过于冗长的示例,而正确性却没有任何改进。希望这对其他人有帮助!它涵盖了其他答案中的所有不同格式,以及更多格式,并且与其他一些答案不同,FedEx 和 USPS 之间没有重叠。
\b([A-Z]{2}\d{9}[A-Z]{2}|(420\d{9}(9[2345])?)?\d{20}|(420\d{5})?(9[12345])?(\d{24}|\d{20})|82\d{8})\b
Run Code Online (Sandbox Code Playgroud)
\b1Z[A-Z0-9]{16}\b
Run Code Online (Sandbox Code Playgroud)
\b([0-9]{12}|100\d{31}|\d{15}|\d{18}|96\d{20}|96\d{32})\b
Run Code Online (Sandbox Code Playgroud)
大部分来自:
| Tracking Number | Kind | Tracking Carrier |
|------------------------------------|-------------------------------------|------------------|
| 03071790000523483741 | USPS 20 | USPS |
| 71123456789123456787 | USPS 20 | USPS |
| 4201002334249200190132607600833457 | USPS 34v2 | USPS |
| 4201028200009261290113185417468510 | USPS 34v2 | USPS |
| 420221539101026837331000039521 | USPS 91 | USPS |
| 71969010756003077385 | USPS 91 | USPS |
| 9505511069605048600624 | USPS 91 | USPS |
| 9101123456789000000013 | USPS 91 | USPS |
| 92748931507708513018050063 | USPS 91 | USPS |
| 9400111201080805483016 | USPS 91 | USPS |
| 9361289878700317633795 | USPS 91 | USPS |
| 9405803699300124287899 | USPS 91 | USPS |
| EK115095696SA | S10 | USPS |
| 1Z5R89390357567127 | UPS | UPS |
| 1Z879E930346834440 | UPS | UPS |
| 1Z410E7W0392751591 | UPS | UPS |
| 1Z8V92A70367203024 | UPS | UPS |
| 1ZXX3150YW44070023 | UPS | UPS |
| 986578788855 | FedEx Express (12) | FedEx |
| 477179081230 | FedEx Express (12) | FedEx |
| 799531274483 | FedEx Express (12) | FedEx |
| 790535312317 | FedEx Express (12) | FedEx |
| 974367662710 | FedEx Express (12) | FedEx |
| 1001921334250001000300779017972697 | FedEx Express (34) | FedEx |
| 1001921380360001000300639585804382 | FedEx Express (34) | FedEx |
| 1001901781990001000300617767839437 | FedEx Express (34) | FedEx |
| 1002297871540001000300790695517286 | FedEx Express (34) | FedEx |
| 61299998820821171811 | FedEx SmartPost | USPS |
| 9261292700768711948021 | FedEx SmartPost | USPS |
| 041441760228964 | FedEx Ground | FedEx |
| 568283610012000 | FedEx Ground | FedEx |
| 568283610012734 | FedEx Ground | FedEx |
| 000123450000000027 | FedEx Ground (SSCC-18) | FedEx |
| 9611020987654312345672 | FedEx Ground 96 (22) | FedEx |
| 9622001900000000000000776632517510 | FedEx Ground GSN | FedEx |
| 9622001560000000000000794808390594 | FedEx Ground GSN | FedEx |
| 9622001560001234567100794808390594 | FedEx Ground GSN | FedEx |
| 9632001560123456789900794808390594 | FedEx Ground GSN | FedEx |
| 9400100000000000000000 | USPS Tracking | USPS |
| 9205500000000000000000 | Priority Mail | USPS |
| 9407300000000000000000 | Certified Mail | USPS |
| 9303300000000000000000 | Collect On Delivery Hold For Pickup | USPS |
| 8200000000 | Global Express Guaranteed | USPS |
| EC000000000US | Priority Mail Express International | USPS |
| 9270100000000000000000 | Priority Mail Express | USPS |
| EA000000000US | Priority Mail Express | USPS |
| CP000000000US | Priority Mail International | USPS |
| 9208800000000000000000 | Registered Mail | USPS |
| 9202100000000000000000 | Signature Confirmation | USPS |
Run Code Online (Sandbox Code Playgroud)
我需要验证 JUST 美国邮政服务 (USPS) 追踪号码。WikiAnswers 说我的数字格式如下:
USPS 仅提供特快专递跟踪服务,通常以“E”开头,再接一个字母,后面跟着 9 位数字,再加上两个字母。USPS 确实为其他服务提供了长度在 16 到 22 位数字之间的“标签号码”。
http://wiki.answers.com/Q/How_many_numbers_in_a_USPS_tracking_number
我补充说,标签编号以“9”开头,因为过去 2 年我从个人发货中获得的所有标签编号均以 9 开头。
因此,假设 WikiAnswers 是正确的,这是我的正则表达式,它与两者都匹配:
/^E\D{1}\d{9}\D{2}$|^9\d{15,21}$/
Run Code Online (Sandbox Code Playgroud)
这很简单。这是细分:
^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
Run Code Online (Sandbox Code Playgroud)
使用 www.gummydev.com 的正则表达式测试器,此模式与我的两个测试字符串相匹配:
特快专递:EK225651436US
标签号:9410803699300003725216
**注意:如果您使用的是 ColdFusion(我就是),请从模式中删除第一个和最后一个“/”
我按下了皇家邮政的正式发布,用于记录交付和特殊交付跟踪参考,但没有走得太远.即使是一套完整的规则,所以我可以推出自己的规则超出了他们的范围.
基本上,即使他们花了大约一个星期并且回来后用各种字母组合表示服务类型,我能够提供我们的经验中的例子,这些例子表明有其他组合明显有效,但他们没有记录.
参考文献遵循我认为Jefe的/^[A-Za-z]{2}[0-9]+GB$/正则表达式所描述的明显标准的国际格式:
XX123456789GB
即使这似乎是一种标准格式,即大多数国际邮件具有相同的格式,其中最后两个字母表示原产国,我无法再找到关于这个"标准"的信息或它来自何处(任何澄清欢迎!).
特别是皇家邮政似乎是使用前两个字母来表示服务水平.我已经设法编制了一个表示特殊交付的前缀列表,但我不相信它是100%完成的:
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
Run Code Online (Sandbox Code Playgroud)
如果没有这些前缀之一,则服务是Recorded Delivery,它提供交付确认但不进行跟踪.
通常情况下,包含S,X或Z表示更高的服务水平,我认为我从未见过正常的Recorded Delivery项目,前缀中包含任何这些字母.
但是,正如您所看到的,如果要使用正则表达式检查服务级别,则需要测试许多前缀,并且考虑到Royal Mail似乎无法提供全面的规则集,那么尝试测试服务级别可能是徒劳的.
以下是美国主要运营商的一些示例数字:
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)
Run Code Online (Sandbox Code Playgroud)
我正在使用的模式(php 代码)。是的,我放弃了并开始针对我可以使用的所有模式进行测试。不得不写第二个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;
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试这些(不保证):
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
美国邮政:
\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
Run Code Online (Sandbox Code Playgroud)
但请在使用前进行测试。我推荐RegexBuddy。