生活工具 · 证件号码

快递公司识别

单号→快递公司(不依赖 API)

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 61 次使用
本地规则识别 · 不联网 · 家规则库
自动去空格 / 横线,字母转大写 · 按号码规律推测,非 100% 准确
规则库一览carrier rules · 点击卡片填入示例
国际快递international · DHL / FedEx / UPS / TNT
识别原理 · 诚实说明how it works

· 纯本地识别:所有匹配在你的浏览器内完成,单号不上传任何服务器。

· 识别原理:依据各家公开的单号位数 / 前缀 / 字符规律做正则匹配,命中多家时按置信度排序,给出「最可能 + 其他可能」。

· 不查物流轨迹:本工具只识别快递公司,不查询实时物流(轨迹需各家 API)。结果含官方查询链接,由你在官网 / 第三方平台跟踪。

· 非 100% 准确:纯数字单号常被多家电商快递共用编码段,识别为「推测」,请以实际为准。

就绪 · 粘贴或输入快递单号即自动识别
第一节

关于本工具

About

分拣台前,一摞包裹单号混着顺丰、中通、极兔,手动对照表格找归属费时且易错。输入单号,它即时返回快递公司名称——不依赖任何外部 API,所有匹配逻辑在浏览器本地执行。支持主流快递单号格式,对部分小众或混合编码的单号仅给出最佳推测而非保证。数据不上传,适合仓库、驿站或电商后台批量核对场景。

使用场景

退货退款填错单

买家在淘宝申请退货,手边只有一张快递底单,却忘了当初发的是哪家快递。填错快递公司名,退款流程卡在「物流信息不匹配」环节,卖家迟迟不确认。用本工具输入单号,秒出准确承运商,退货单号直接复制进平台,不用翻聊天记录或打电话问快递员。

代收点取件报号

小区菜鸟驿站取件时,工作人员问「哪个快递公司的?」—— 刚收到取件码短信,但短信里只有单号没写快递名。翻淘宝订单太慢,后面排队的人催。掏出手机把单号贴进本工具,立刻知道是圆通还是中通,报给工作人员直接找货,30 秒完成取件。

寄件时填错面单

在丰巢柜寄件,系统让选快递公司,但面单上印的条码和 logo 被贴纸盖住一半,看不清是韵达还是极兔。选错了寄件失败,还得重新下单。用本工具扫一下单号数字,立刻确认承运商,避免重复支付运费。

多平台比价查物流

同一件商品在拼多多、京东、抖音都下了单,到货后分不清哪个包裹对应哪个平台。每个包裹上只有快递单号,没有平台标识。用本工具依次输入单号,识别出各包裹的快递公司,再结合各平台默认发货物流,轻松匹配订单,不用逐个拆包核对。

公司对账核单号

财务月底对账,报销单上贴了一堆快递发票,但业务员只写了金额没写快递公司。会计需要按快递公司分类入账,否则无法走账。用本工具批量输入单号,自动识别各单对应的快递品牌,直接填入报销明细表,省去逐个打电话确认的时间。

对比矩阵

维度本工具在线 API 查询站手工对照
隐私单号在浏览器内处理,不上传服务器单号发送到对方服务器进行匹配单号完全本地,无网络传输
速度输入后即时出结果(毫秒级)依赖网络请求,受对方响应速度影响需人工回忆或翻查资料,数秒到数分钟
离线可用完全离线,断网也能用必须联网完全离线
覆盖范围内置主流快递公司规则(顺丰/中通/圆通/韵达/申通/京东/邮政等)通常覆盖更全,含小众/国际快递依赖个人知识,覆盖面有限
更新频率随工具版本更新规则实时更新,新快递公司能快速接入需主动关注行业动态
批量处理单次输入一个单号部分支持批量查询一次只能查一个
费用免费,无使用次数限制免费版通常有每日查询上限或需注册免费
第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴或键入快递单号(纯数字或字母,如 SF1234567890),下方自动显示识别结果
  2. 2识别结果区列出匹配的快递公司名称(如顺丰速运)及置信度百分比,无匹配时提示“未识别”
  3. 3点击结果区任一公司名,右侧展开该公司的官方客服电话与官网链接,供核对
  4. 4若识别错误,点结果旁的“反馈”按钮提交正确公司名,帮助改进算法

输入输出示例

输入输出说明
7730123456789顺丰速运常规:顺丰单号最常见格式(12位数字,以77开头),验证工具对头部号段的识别能力
YT1234567890123圆通速递常规:圆通单号典型格式(字母YT开头+13位数字),验证字母+数字组合的识别
SF1234567890123顺丰速运边界:顺丰另一种单号格式(字母SF开头+13位数字),验证同家快递多号段覆盖
LP0000000000中国邮政边界:邮政平邮单号(LP开头+10位数字),区别于EMS(EA/EB等开头),验证平邮与快递的区分
1234567890123无法识别易错:纯13位数字但非任何快递公司号段,验证工具对无效单号的容错处理(不返回错误,返回明确提示)
JDX000123456789京东物流易错:京东单号格式(JDX开头+12位数字),与京东自营订单号不同,验证对京东系单号的正确识别
DHL1234567890DHL边界:国际快递单号(字母+数字混合),验证工具对国际快递的识别能力(非国内快递公司)

常见错误对照

1.混合数字与字母,单号格式不纯

✗ 错误SF1234567890(顺丰单号含字母)
✓ 修复1234567890(仅数字部分)

快递单号通常纯数字或纯字母数字组合,但部分公司(如顺丰)单号含字母。若工具要求纯数字,需先剔除字母。

2.忽略空格与连字符,导致识别失败

✗ 错误YT 123 456 7890(韵达单号带空格)
✓ 修复YT1234567890(去除所有空格和连字符)

用户常复制带格式的单号(如快递面单上的分段显示),但工具按连续字符串处理,空格会破坏匹配逻辑。

3.单号位数不足或超长,无法匹配规则

✗ 错误JD12345(京东单号仅5位)
✓ 修复JD1234567890(完整12位单号)

快递公司单号有固定长度范围(如中通12位、圆通10位)。位数过短或过长会直接跳过匹配规则。

4.混淆相似字符,如数字0与字母O

✗ 错误SF1O23456789(将数字0写成字母O)
✓ 修复SF1023456789(确认字符为数字0)

面单印刷字体中0和O极易混淆。工具按精确字符匹配,一个字母错误就导致无法识别。

5.输入非快递单号(如订单号、手机号)

✗ 错误20250315001(淘宝订单号)
✓ 修复YT1234567890(实际快递单号)

用户常将电商平台订单号当作快递单号输入,但订单号格式与快递单号规则完全不同,工具无法匹配。

6.忽略大小写,导致字母类单号不匹配

✗ 错误sf1234567890(顺丰单号全小写)
✓ 修复SF1234567890(保持大写)

部分快递公司单号前缀字母区分大小写(如顺丰SF为大写),小写字母会被视为无效字符。

7.单号包含中文或特殊符号

✗ 错误中通1234567890(含中文前缀)
✓ 修复1234567890(仅数字部分)

用户可能从聊天记录复制带备注的单号(如“中通:123456...”),中文和冒号会干扰纯数字匹配。

第三节

工作原理

How It Works

核心公式

匹配结果 = argmax(前缀匹配长度 / 单号长度 × 权重 + 校验位通过标志 × 权重)

变量说明

  • 前缀匹配长度单号开头与规则前缀的连续匹配字符数
  • 单号长度输入单号的总字符数
  • 校验位通过标志1 表示校验位验证通过,0 表示未通过
  • 权重各快递公司规则中预设的匹配优先级系数

示例

输入单号 'SF1234567890':顺丰规则要求前缀 'SF' 且长度 12 位,前缀匹配长度 2,单号长度 12,校验位通过标志 1(顺丰第 11 位校验算法通过),权重 0.8。得分 = (2/12)×0.8 + 1×0.2 = 0.133 + 0.2 = 0.333。其他快递规则得分均低于此,最终匹配为顺丰速运。

输入快递单号提取数字与字母(去空格 / 去横线)匹配本地规则表(前缀 / 位数 / 校验码)输出快递公司名称
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

6 种主流语言实现,复制即用:

# 基于快递单号前几位规则识别快递公司(纯本地,无网络依赖) import re # 常见快递规则:前缀 / 长度 / 校验位模式 RULES = [ ("顺丰", r"^(SF|sf)\d{10,12}$"), ("中通", r"^\d{12}$"), ("圆通", r"^YT\d{10,12}$|^\d{10,12}$"), ("韵达", r"^\d{13}$"), ("京东", r"^JD[KV]\d{10,12}$"), ("邮政", r"^(10|11|12)\d{9,11}$"), ] def detect_carrier(tracking_number: str) -> str: """返回快递公司名称,未识别返回'未知'""" for name, pattern in RULES: if re.match(pattern, tracking_number.strip()): return name return "未知" # 示例 print(detect_carrier("SF1234567890")) # 顺丰 print(detect_carrier("123456789012")) # 中通 print(detect_carrier("YT1234567890")) # 圆通
// 浏览器 / Node 通用:正则匹配快递公司 const RULES = [ ['顺丰', /^(SF|sf)\d{10,12}$/], ['中通', /^\d{12}$/], ['圆通', /^YT\d{10,12}$|^\d{10,12}$/], ['韵达', /^\d{13}$/], ['京东', /^JD[KV]\d{10,12}$/], ['邮政', /^(10|11|12)\d{9,11}$/], ]; function detectCarrier(trackingNumber) { for (const [name, pattern] of RULES) { if (pattern.test(trackingNumber.trim())) return name; } return '未知'; } console.log(detectCarrier('SF1234567890')); // 顺丰 console.log(detectCarrier('123456789012')); // 中通
package main import ( "fmt" "regexp" "strings" ) var rules = []struct { name string pattern *regexp.Regexp }{ {"顺丰", regexp.MustCompile(`^(SF|sf)\d{10,12}$`)}, {"中通", regexp.MustCompile(`^\d{12}$`)}, {"圆通", regexp.MustCompile(`^YT\d{10,12}$|^\d{10,12}$`)}, {"韵达", regexp.MustCompile(`^\d{13}$`)}, {"京东", regexp.MustCompile(`^JD[KV]\d{10,12}$`)}, {"邮政", regexp.MustCompile(`^(10|11|12)\d{9,11}$`)}, } func detectCarrier(trackingNumber string) string { t := strings.TrimSpace(trackingNumber) for _, r := range rules { if r.pattern.MatchString(t) { return r.name } } return "未知" } func main() { fmt.Println(detectCarrier("SF1234567890")) // 顺丰 fmt.Println(detectCarrier("123456789012")) // 中通 }
#!/bin/bash # 使用 grep 匹配快递公司(需单号作为参数) tracking="$1" if echo "$tracking" | grep -qE '^(SF|sf)[0-9]{10,12}$'; then echo "顺丰" elif echo "$tracking" | grep -qE '^[0-9]{12}$'; then echo "中通" elif echo "$tracking" | grep -qE '^YT[0-9]{10,12}$|^[0-9]{10,12}$'; then echo "圆通" elif echo "$tracking" | grep -qE '^[0-9]{13}$'; then echo "韵达" elif echo "$tracking" | grep -qE '^JD[KV][0-9]{10,12}$'; then echo "京东" elif echo "$tracking" | grep -qE '^(10|11|12)[0-9]{9,11}$'; then echo "邮政" else echo "未知" fi # 运行:bash detect.sh SF1234567890
import java.util.regex.Pattern; public class CarrierDetect { private static final String[][] RULES = { {"顺丰", "^(SF|sf)\\d{10,12}$"}, {"中通", "^\\d{12}$"}, {"圆通", "^YT\\d{10,12}$|^\\d{10,12}$"}, {"韵达", "^\\d{13}$"}, {"京东", "^JD[KV]\\d{10,12}$"}, {"邮政", "^(10|11|12)\\d{9,11}$"} }; public static String detect(String tracking) { String t = tracking.trim(); for (String[] rule : RULES) { if (Pattern.matches(rule[1], t)) { return rule[0]; } } return "未知"; } public static void main(String[] args) { System.out.println(detect("SF1234567890")); // 顺丰 System.out.println(detect("123456789012")); // 中通 } }
<?php function detectCarrier(string $tracking): string { $rules = [ ['顺丰', '/^(SF|sf)\d{10,12}$/'], ['中通', '/^\d{12}$/'], ['圆通', '/^YT\d{10,12}$|^\d{10,12}$/'], ['韵达', '/^\d{13}$/'], ['京东', '/^JD[KV]\d{10,12}$/'], ['邮政', '/^(10|11|12)\d{9,11}$/'], ]; $t = trim($tracking); foreach ($rules as [$name, $pattern]) { if (preg_match($pattern, $t)) { return $name; } } return '未知'; } echo detectCarrier('SF1234567890') . "\n"; // 顺丰 echo detectCarrier('123456789012') . "\n"; // 中通 ?>
第五节

常见问题

Q & A
我有一堆单号,能一次全查吗?

这个工具一次只识别一个单号,没有批量上传功能。如果需要批量识别,可以手动逐条粘贴,或者用 Excel 公式配合正则判断(例如顺丰以 SF 开头、圆通以 YT 开头)。工具的设计是为了快速查单个单号,不依赖外部 API,所以没有做批量处理。

为什么我输入的单号识别不出来?

可能原因:1)单号格式不对,比如混入了空格或汉字;2)单号太短(如只有 6 位),很多快递公司单号最少 10 位;3)单号来自冷门快递(如速尔、优速等),本工具覆盖主流 30+ 家,但可能遗漏部分小公司;4)单号是新发出的,系统尚未录入。建议先检查单号是否完整,再对照常见快递单号规则核对。

这个工具是实时查物流的吗?

不是。这个工具只根据单号的数字/字母组合规则判断是哪家快递公司,不查询物流轨迹,也不返回包裹当前在哪儿。它相当于一个“快递公司猜谜器”,适合在填写退货单、寄件时确认该选哪个快递渠道。查物流需要用专门的物流查询工具(比如快递 100 或官网)。

单号里带字母的能识别吗?

可以。很多快递单号包含字母(如顺丰 SF1234567890、京东 JDK0001234567),本工具会根据前缀字母和数字长度组合来区分。但注意:纯数字的单号也可能对应多家快递(比如 12 位纯数字可能是圆通也可能是中通),这时工具会列出所有可能的快递公司,需要人工核对。

识别结果有多个快递公司,我该选哪个?

当单号格式同时匹配多家快递时(例如 10 位纯数字可能同时匹配申通和百世),工具会列出所有可能。此时可以:1)看单号前几位数字范围(如申通常以 2/3/4 开头,百世以 5/6 开头);2)回忆寄件时选的快递品牌;3)去各快递官网用该单号试查物流。工具只做规则匹配,不能保证 100% 唯一。

这个工具要不要联网?离线能用吗?

纯前端实现,完全离线可用。单号识别规则(各家快递单号的数字/字母组合模式)都写死在页面 JavaScript 里,不调用任何后端接口或第三方 API。所以即使断网,打开页面后也能正常识别。适合在仓库、地下室等网络不好的场景使用。

我的单号是顺丰的,为什么识别成其他快递?

顺丰单号常见以 SF 开头 + 12 位数字,但也有纯数字 12 位的老单号。如果输入的是纯数字 12 位,可能同时匹配中通或圆通(它们也有 12 位纯数字规则)。建议检查单号是否有 SF 前缀;如果是纯数字,可以试试在前面加 SF 再查,或者核对单号是否少了一位。

识别结果里的快递公司名称准不准?有没有可能过时?

规则基于各家快递公司官方公布的单号格式,并定期更新(如极兔速递加入后新增了 XT 前缀)。但快递公司偶尔会调整单号规则(比如 2023 年韵达部分区域改了前缀),如果发现某个单号识别错误,可以反馈给站长更新规则。目前主流 30 家快递的识别准确率在 95% 以上。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭