使用方法
- 「生成数量」默认 5 条,允许 1~50 的整数。
- 「地区范围」默认「全部地区」,即 31 个省级行政区、39 个城市、84 个区县;也可以只挑一个省,结果就全部落在该省。
- 「每条附一行 6 位邮编」默认勾选:前 3 位取该区县真实的邮区码,后 3 位在 000~999 之间均匀抽取。
- 「每条附一行虚构收件人姓名」默认不勾,勾上后每组地址前面多一行中文姓名。
- 点「生成虚拟地址」,或在任意输入框里按 Enter;点「复制全部」带走纯文本,点「导出结果 CSV」存成表格。
- 下方 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 个字。
- 组合空间:街道 24 × 6 = 144,门牌四种形式合计 13255920,单区县 144 × 13255920 = 1908852480,84 个区县共 160343608320,约 1603.44 亿;把邮编也算进去约 160.34 万亿。
- 一次生成 5 条时两条地址完全相同的概率约 6.24 × 10-11(10 ÷ 1603.44 亿),连邮编也相同约 6.24 × 10-14;生成 50 条时前者升到约 7.64 × 10-9,仍远低于万分之一次。
- 最短地址是形式一取 1 号,例如"北京市东城区和平路 1 号",13 个字;最长是形式二取上界,例如"内蒙古自治区呼和浩特市新城区银河大道 999 号院 30 号楼 6 单元 1804 室",43 个字。
输入范围与构造比例对照表
各控件取值范围如下,越界会给出具体提示,不会静默取默认值:
| 控件 | 允许范围 | 默认值 | 越界时的行为 |
|---|---|---|---|
| 生成数量 | 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 | 北京市 | 北京市 | 东城区 | 100 | 100000–100999 |
| 2 | 北京市 | 北京市 | 西城区 | 100 | 100000–100999 |
| 3 | 北京市 | 北京市 | 朝阳区 | 100 | 100000–100999 |
| 4 | 北京市 | 北京市 | 海淀区 | 100 | 100000–100999 |
| 5 | 北京市 | 北京市 | 丰台区 | 100 | 100000–100999 |
| 6 | 北京市 | 北京市 | 通州区 | 101 | 101000–101999 |
| 7 | 上海市 | 上海市 | 黄浦区 | 200 | 200000–200999 |
| 8 | 上海市 | 上海市 | 徐汇区 | 200 | 200000–200999 |
| 9 | 上海市 | 上海市 | 长宁区 | 200 | 200000–200999 |
| 10 | 上海市 | 上海市 | 静安区 | 200 | 200000–200999 |
| 11 | 上海市 | 上海市 | 浦东新区 | 200 | 200000–200999 |
| 12 | 上海市 | 上海市 | 闵行区 | 201 | 201000–201999 |
| 13 | 天津市 | 天津市 | 和平区 | 300 | 300000–300999 |
| 14 | 天津市 | 天津市 | 河西区 | 300 | 300000–300999 |
| 15 | 天津市 | 天津市 | 滨海新区 | 300 | 300000–300999 |
| 16 | 重庆市 | 重庆市 | 渝中区 | 400 | 400000–400999 |
| 17 | 重庆市 | 重庆市 | 江北区 | 400 | 400000–400999 |
| 18 | 重庆市 | 重庆市 | 沙坪坝区 | 400 | 400000–400999 |
| 19 | 广东省 | 广州市 | 越秀区 | 510 | 510000–510999 |
| 20 | 广东省 | 广州市 | 天河区 | 510 | 510000–510999 |
| 21 | 广东省 | 广州市 | 海珠区 | 510 | 510000–510999 |
| 22 | 广东省 | 深圳市 | 福田区 | 518 | 518000–518999 |
| 23 | 广东省 | 深圳市 | 南山区 | 518 | 518000–518999 |
| 24 | 广东省 | 深圳市 | 罗湖区 | 518 | 518000–518999 |
| 25 | 浙江省 | 杭州市 | 上城区 | 310 | 310000–310999 |
| 26 | 浙江省 | 杭州市 | 西湖区 | 310 | 310000–310999 |
| 27 | 浙江省 | 杭州市 | 滨江区 | 310 | 310000–310999 |
| 28 | 浙江省 | 宁波市 | 海曙区 | 315 | 315000–315999 |
| 29 | 浙江省 | 宁波市 | 鄞州区 | 315 | 315000–315999 |
| 30 | 浙江省 | 温州市 | 鹿城区 | 325 | 325000–325999 |
| 31 | 江苏省 | 南京市 | 玄武区 | 210 | 210000–210999 |
| 32 | 江苏省 | 南京市 | 鼓楼区 | 210 | 210000–210999 |
| 33 | 江苏省 | 南京市 | 江宁区 | 211 | 211000–211999 |
| 34 | 江苏省 | 苏州市 | 姑苏区 | 215 | 215000–215999 |
| 35 | 江苏省 | 苏州市 | 工业园区 | 215 | 215000–215999 |
| 36 | 江苏省 | 无锡市 | 梁溪区 | 214 | 214000–214999 |
| 37 | 四川省 | 成都市 | 锦江区 | 610 | 610000–610999 |
| 38 | 四川省 | 成都市 | 武侯区 | 610 | 610000–610999 |
| 39 | 四川省 | 成都市 | 青羊区 | 610 | 610000–610999 |
| 40 | 山东省 | 济南市 | 历下区 | 250 | 250000–250999 |
| 41 | 山东省 | 济南市 | 市中区 | 250 | 250000–250999 |
| 42 | 山东省 | 青岛市 | 市南区 | 266 | 266000–266999 |
| 43 | 山东省 | 青岛市 | 崂山区 | 266 | 266000–266999 |
| 44 | 湖北省 | 武汉市 | 江岸区 | 430 | 430000–430999 |
| 45 | 湖北省 | 武汉市 | 武昌区 | 430 | 430000–430999 |
| 46 | 湖北省 | 武汉市 | 洪山区 | 430 | 430000–430999 |
| 47 | 陕西省 | 西安市 | 碑林区 | 710 | 710000–710999 |
| 48 | 陕西省 | 西安市 | 雁塔区 | 710 | 710000–710999 |
| 49 | 陕西省 | 西安市 | 未央区 | 710 | 710000–710999 |
| 50 | 湖南省 | 长沙市 | 芙蓉区 | 410 | 410000–410999 |
| 51 | 湖南省 | 长沙市 | 岳麓区 | 410 | 410000–410999 |
| 52 | 河南省 | 郑州市 | 金水区 | 450 | 450000–450999 |
| 53 | 河南省 | 郑州市 | 二七区 | 450 | 450000–450999 |
| 54 | 河南省 | 郑州市 | 中原区 | 450 | 450000–450999 |
| 55 | 辽宁省 | 沈阳市 | 和平区 | 110 | 110000–110999 |
| 56 | 辽宁省 | 沈阳市 | 沈河区 | 110 | 110000–110999 |
| 57 | 辽宁省 | 大连市 | 中山区 | 116 | 116000–116999 |
| 58 | 福建省 | 福州市 | 鼓楼区 | 350 | 350000–350999 |
| 59 | 福建省 | 厦门市 | 思明区 | 361 | 361000–361999 |
| 60 | 安徽省 | 合肥市 | 庐阳区 | 230 | 230000–230999 |
| 61 | 安徽省 | 合肥市 | 蜀山区 | 230 | 230000–230999 |
| 62 | 江西省 | 南昌市 | 东湖区 | 330 | 330000–330999 |
| 63 | 江西省 | 南昌市 | 西湖区 | 330 | 330000–330999 |
| 64 | 云南省 | 昆明市 | 五华区 | 650 | 650000–650999 |
| 65 | 云南省 | 昆明市 | 盘龙区 | 650 | 650000–650999 |
| 66 | 广西壮族自治区 | 南宁市 | 青秀区 | 530 | 530000–530999 |
| 67 | 广西壮族自治区 | 南宁市 | 兴宁区 | 530 | 530000–530999 |
| 68 | 河北省 | 石家庄市 | 长安区 | 050 | 050000–050999 |
| 69 | 河北省 | 石家庄市 | 桥西区 | 050 | 050000–050999 |
| 70 | 山西省 | 太原市 | 小店区 | 030 | 030000–030999 |
| 71 | 山西省 | 太原市 | 迎泽区 | 030 | 030000–030999 |
| 72 | 内蒙古自治区 | 呼和浩特市 | 新城区 | 010 | 010000–010999 |
| 73 | 黑龙江省 | 哈尔滨市 | 南岗区 | 150 | 150000–150999 |
| 74 | 黑龙江省 | 哈尔滨市 | 道里区 | 150 | 150000–150999 |
| 75 | 吉林省 | 长春市 | 朝阳区 | 130 | 130000–130999 |
| 76 | 海南省 | 海口市 | 龙华区 | 570 | 570000–570999 |
| 77 | 贵州省 | 贵阳市 | 南明区 | 550 | 550000–550999 |
| 78 | 贵州省 | 贵阳市 | 云岩区 | 550 | 550000–550999 |
| 79 | 甘肃省 | 兰州市 | 城关区 | 730 | 730000–730999 |
| 80 | 甘肃省 | 兰州市 | 七里河区 | 730 | 730000–730999 |
| 81 | 宁夏回族自治区 | 银川市 | 兴庆区 | 750 | 750000–750999 |
| 82 | 青海省 | 西宁市 | 城西区 | 810 | 810000–810999 |
| 83 | 新疆维吾尔自治区 | 乌鲁木齐市 | 天山区 | 830 | 830000–830999 |
| 84 | 西藏自治区 | 拉萨市 | 城关区 | 850 | 850000–850999 |
已显示 12 / 84 行。
结果边界与随机性说明
- 每条独立抽取,共用街区不奇怪。区县等概率抽,84 选 1,5 条里出现两三条落在同一个省甚至同一个区县完全正常。想让每条都不同地区,请按省份分批生成。
- 邮编不是真实投递范围。前 3 位真实、后 3 位随机,整串结构合法,但基本不对应任何真实投递局,别拿它反查"这是哪条街"。
- 门牌号最小值是 1。四种形式的基数都从 1 开始,不会出现 0 号或负数号。
- 层级到区县为止。地址里的"街道"是道路名称(如"滨江大道"),不是行政区划意义上的街道办;要补到街道/社区一级需要另一份更细的区划数据。
- 不覆盖港澳台。31 个省级行政区是大陆全部省级行政区,港澳台没有收录,选"全部地区"也不会出现。
- 街道名可能重名,也可能现实中不存在。"银杏路""清河巷"在不少城市都有,但本页不校验它是否真的属于所抽中的那个区县。
- 输出长度 13~43 个字。做字段长度校验时直接用最长档当边界值,而不是手写超长字符串。
- 常见误用:拿虚构地址注册账号、下单或收件。这类地址无法投递,提交订单只会造成纠纷;用来完成实名认证或规避验证还可能违反平台规则乃至法律。本页只用于测试、演示与脱敏。
常见问题
生成的邮编是真的吗?会被判为无效吗?
前 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 双击打开中文不乱码。