虚拟地址生成器

按行政区划层级逐层抽取,拼出「省+市+区县+街道+门牌」,再挂一个前 3 位真实、后 3 位随机的 6 位邮编。覆盖 31 个省级行政区,可只挑一个省生成。

示例展示(演示值,点「生成虚拟地址」会重新随机):
广东省深圳市南山区滨江大道 1268 号院 3 号楼 2 单元 1204 室
邮编 518137

北京市海淀区银杏路 77-3 号
邮编 100482

浙江省杭州市西湖区清河巷 2156 号
邮编 310715

四川省成都市武侯区玉兰街 18 号院 12 号楼 1 单元 803 室
邮编 610260

陕西省西安市雁塔区迎宾弄 902 号
邮编 710334

提示:数量输入框里直接按 Enter 就能重新生成;每次点击都是独立抽取,两条结果落在同一个区县属于正常现象。

使用方法

  1. 「生成数量」默认 5 条,允许 1~50 的整数。
  2. 「地区范围」默认「全部地区」,即 31 个省级行政区、39 个城市、84 个区县;也可以只挑一个省,结果就全部落在该省。
  3. 「每条附一行 6 位邮编」默认勾选:前 3 位取该区县真实的邮区码,后 3 位在 000~999 之间均匀抽取。
  4. 「每条附一行虚构收件人姓名」默认不勾,勾上后每组地址前面多一行中文姓名。
  5. 点「生成虚拟地址」,或在任意输入框里按 Enter;点「复制全部」带走纯文本,点「导出结果 CSV」存成表格。
  6. 下方 84 行「区县—邮区码对照表」默认显示 12 行,可「加载更多」翻到全部,也能导出 CSV 或复制 TSV。

这个虚拟地址生成器能解决什么问题

一是填测试数据。电商下单、物流面单、CRM 客户档案联调时总要一批"看着像真的"的收货信息,手编容易越编越像、还可能撞上自己的真实住址;用这个虚拟地址生成器一次抽 50 条,层级完整、来源随机。

二是验证字段长度。真实中文地址从 13 个字到 43 个字都有,前端输入框和数据库字段常按"我以为的长度"设计。直接拿本页的最长档当边界用例,比手写一个"很长很长的地址"更接近真实分布。

三是做脱敏样例。写文档、录演示视频、做教程截图时,虚构地址既不影响阅读,也不会泄露任何人的住址。四是测试套打排版:面单、信封模板最怕某个省名特别长导致换行错位,按省分批生成能很快找到溢出临界点。

本页不做这些事:不保证地址可投递,不生成港澳台地址,也不校验街道名在现实中是否存在。要单独的邮编串请用「虚拟邮编代码生成器」,配套的收件人信息可以用「虚拟姓名生成器」「虚拟手机号生成器」。

生成原理:行政区划层级、加权街道词根与「真前缀假后缀」邮编

地址是分层抽出来的,不是套模板。顺序为:84 个区县等概率抽一个 → 读出它对应的省级行政区、城市与邮区码 → 在 24 个地名词根和 6 个通名里各抽一个拼成街道名 → 在 4 种门牌形式里按权重抽一种并生成门牌 → 需要邮编时用邮区码拼 3 位随机数。因此同一区县能组合出的地址数量,等于街道名组合数乘以门牌组合数。

省、市、区县三级用的是行政区划口径。「省(自治区、直辖市)→ 地级市 → 区/县」这套层级来自 GB/T 2260《中华人民共和国行政区划代码》所定义的体系,内置的 84 个区县全部挂在这套层级上。直辖市按"北京市 → 北京市 → 海淀区"处理,输出时把重复的城市名去掉,直接写成"北京市海淀区"。

街道名是"词根 × 通名"的组合。24 个地名词根(建设、和平、新华、解放、人民、光明、幸福、长虹、兴业、中山、文化、滨江、迎宾、花园、银杏、梧桐、香樟、朝阳、望江、金桥、玉兰、清河、广济、双拥)乘以 6 个通名,得到 144 种组合。通名按权重抽:路 45%、大道 15%、街 15%、巷 10%、弄 8%、里 7%,合计 100%。让"路"占近一半是刻意的——现实中道路通名的分布本身极不均匀,等概率抽出来的结果会明显不像真实地址。

门牌号分四种形式,权重 55% / 25% / 12% / 8%。取值个数分别是:形式一「N 号」N 取 1~9999,共 9999 种;形式二「N 号院 M 号楼 U 单元 R 室」,N 取 1~999、号楼 1~30、单元 1~6、室按"楼层 1~18 + 房间 01~04"共 72 种,相乘得 999 × 30 × 6 × 72 = 719280 种;形式三「N-M 号」主号 1~999、副号 1~99,共 98901 种;形式四「N 号 P 栋」9999 × 20 = 199980 种。四种相加的上界是 13255920,乘上 144 种街道名得到单区县 1908852480 种(19.09 亿),84 个区县合计约 1603.44 亿。

邮编是"真前缀 + 假后缀"。中国邮政编码固定 6 位:前 2 位对应省(自治区、直辖市),前 3 位对应邮区,前 4 位对应县市,后 2 位对应投递局。本页取该区县真实的前 3 位邮区码(北京 100、上海 200、广州 510、深圳 518、成都 610、西安 710 等,数据里一共出现 42 个不同邮区码),再把后 3 位在 000~999 均匀抽取。生成的邮编结构完全合法,但绝大多数并不对应真实投递局——1000 个后三位取值里,一个区县实际在用的通常只有个位数。

随机数用 Math.random() 而不是加密随机,是刻意的取舍。本页要的是"分布像真实地址",不是"不可预测":虚构地址不承担安全职责,用 Math.random() 省掉拒绝采样与随机数池的开销,抽 50 条几乎不占时间。需要不可预测的随机串(密码、令牌、UUID)请用生成器分类里那几个基于 crypto.getRandomValues 的工具。

完整示例(数值由页面逻辑逐项复算)

示例条件与默认值一致:数量 5 条、地区范围全部地区、勾选邮编、不勾姓名。下面 5 条就是页面打开时结果区显示的内容,点一次「生成虚拟地址」会换成完全不同的一组:

广东省深圳市南山区滨江大道 1268 号院 3 号楼 2 单元 1204 室 邮编 518137
北京市海淀区银杏路 77-3 号 邮编 100482
浙江省杭州市西湖区清河巷 2156 号 邮编 310715
四川省成都市武侯区玉兰街 18 号院 12 号楼 1 单元 803 室 邮编 610260
陕西省西安市雁塔区迎宾弄 902 号 邮编 710334

拆开第一条:区县抽中广东省深圳市南山区,邮区码取该区县真实前 3 位 518;街道抽中词根"滨江"加通名"大道";门牌抽中形式二(占 25%),主号 1268、号楼 3、单元 2、楼层 12、房间 04,拼成"1268 号院 3 号楼 2 单元 1204 室";邮编后 3 位取 137,合成 518137。整条 37 个字。

输入范围与构造比例对照表

各控件取值范围如下,越界会给出具体提示,不会静默取默认值:

控件允许范围默认值越界时的行为
生成数量1~50 的整数5空值、0、−1、51、小数一律拒绝并说明上限来源
地区范围全部地区 / 31 个省级行政区全部地区所选地区没有可用区县时提示改回全部地区
邮编勾选 / 不勾勾选不勾时结果里不出现邮编行
收件人姓名勾选 / 不勾不勾勾选后每组前面多一行姓名

下面两张表是生成器实际使用的权重与取值个数,都是精确值而非约数:

街道通名权重门牌形式权重取值个数
路45%N 号(1~9999)55%9999
大道15%N 号院 M 号楼 U 单元 R 室25%719280
街15%N-M 号(1~999 与 1~99)12%98901
巷10%N 号 P 栋(1~9999 与 1~20)8%199980
弄8%地名词根总个数—24
里7%街道名组合(24 × 6)—144
六项合计100%门牌四种形式合计100%13255920

这张「区县—邮区码对照表」就是生成器内置的全部 84 个区县及其真实邮区码。默认渲染 12 行,点「加载更多」每次追加 12 行;「导出对照表 CSV」导出完整 84 行(带 BOM),「复制对照表」把当前显示的行按制表符复制。

#省级行政区城市区县邮区码可用邮编区间
1北京市北京市东城区100100000–100999
2北京市北京市西城区100100000–100999
3北京市北京市朝阳区100100000–100999
4北京市北京市海淀区100100000–100999
5北京市北京市丰台区100100000–100999
6北京市北京市通州区101101000–101999
7上海市上海市黄浦区200200000–200999
8上海市上海市徐汇区200200000–200999
9上海市上海市长宁区200200000–200999
10上海市上海市静安区200200000–200999
11上海市上海市浦东新区200200000–200999
12上海市上海市闵行区201201000–201999

已显示 12 / 84 行。

结果边界与随机性说明

常见问题

生成的邮编是真的吗?会被判为无效吗?

前 3 位是真的邮区码,后 3 位随机,整串格式合法,任何只校验"6 位数字"的表单都会通过。但它几乎不指向真实投递局——同一区县后 3 位有 1000 种取值,实际在用的通常只有个位数。能过校验,不能真寄到。

为什么连着生成两次,区县都一样?

区县是等概率独立抽取,84 个区县每次概率相同,只生成 2 条时命中同一个区县的概率约 1/84,并不低。想覆盖更多地区,把数量调到 20 以上,或按省份分几批生成。

门牌号会抽到 0 号或者负数吗?

不会。四种形式的基数全部从 1 开始:主号 1~9999(形式一和四)、1~999(形式二和三),副号 1~99,号楼 1~30,单元 1~6,楼层 1~18,房间 01~04,栋 1~20。这些范围是硬编码的,没有开放成输入项。

能不能生成香港、澳门、台湾的地址?

不能。内置数据是大陆 31 个省级行政区、39 个城市、84 个区县,港澳台不在其中,「地区范围」下拉里也找不到这几项。

为什么有些路名看着眼熟,有些完全没见过?

街道名是"24 个地名词根 × 6 个通名"拼出来的 144 种组合。"人民路""建设大道""新华街"本身就是各地常见的道路名,所以眼熟;而词根与通名随机配对,也可能拼出当地并不存在的名字。本页不做真实道路校验。

这些地址能用来注册账号或收货吗?

不能。地址无法投递,下单只会造成纠纷;用编造地址完成实名认证或规避验证还可能违反平台规则甚至法律。这个虚拟地址生成器的用途是测试数据、界面联调和文档脱敏。

为什么不用加密随机数?

因为这里不需要抗预测。虚构地址不承担安全职责,Math.random() 已经把组合空间摊到 1603.44 亿,重复概率低到可忽略,同时省掉拒绝采样和随机数池的开销。要生成密码、令牌、UUID 这类需要不可预测性的串,请用基于 crypto.getRandomValues 的工具。

一次最多只能生成 50 条吗?想导出到表格怎么办?

上限 50 条,再多页面渲染会明显变慢。分批生成也能导出:点「导出结果 CSV」会把当前结果区全部条目按"序号、收货人、地址、邮编"四列写成带 BOM 的 UTF-8 文件,Excel 双击打开中文不乱码。

相关工具