返回

正则表达式教程:中国邮政编码校验

正则表达式

一、正则解释

正则表达式:/^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/

拆分正则:

  • ^: 起始锚点,匹配字符串的开头
  • (0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6]): 匹配中国省份的邮政编码前两位,其中:
    • 0[1-7]: 北京、天津、河北、山西、内蒙古、辽宁、吉林
    • 1[0-356]: 上海、江苏、浙江、安徽、福建、山东
    • 2[0-7]: 黑龙江、吉林、辽宁、河北、河南、山东、山西
    • 3[0-6]: 浙江、安徽、福建、江西、山东、江苏
    • 4[0-7]: 广东、广西、海南、湖南、湖北、江西、福建
    • 5[1-7]: 四川、贵州、云南、西藏、重庆、陕西、甘肃
    • 6[1-7]: 陕西、甘肃、青海、宁夏、新疆、西藏、四川
    • 7[0-5]: 辽宁、吉林、黑龙江、内蒙古、河北
    • 8[013-6]: 广西、云南、贵州、四川、重庆、西藏、青海
  • \d{4}: 匹配后四位数字
  • $: 结束锚点,匹配字符串的结尾

二、使用场景

该正则表达式主要用于校验中国邮政编码的格式是否正确,可以应用于以下场景:

  • 用户注册或信息收集时,验证用户输入的邮政编码
  • 地址管理系统中,校验地址信息的邮政编码
  • 物流管理系统中,处理邮寄包裹时校验邮政编码

三、代码示例

JavaScript

const regex = /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/;

const isValid = regex.test('100101'); // true
console.log(isValid);

Java

import java.util.regex.Pattern;

public class PostalCodeValidator {

    private static final String REGEX = "^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\\d{4}
import java.util.regex.Pattern;

public class PostalCodeValidator {

    private static final String REGEX = "^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\\d{4}$";

    public static boolean isValid(String postalCode) {
        return Pattern.matches(REGEX, postalCode);
    }

    public static void main(String[] args) {
        boolean isValid = isValid("100101"); // true
        System.out.println(isValid);
    }
}
quot;
; public static boolean isValid(String postalCode) { return Pattern.matches(REGEX, postalCode); } public static void main(String[] args) { boolean isValid = isValid("100101"); // true System.out.println(isValid); } }

PHP

<?php

$regex = "/^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/";

$isValid = preg_match($regex, '100101'); // 1 (true)
var_dump($isValid);

Python

import re

regex = r"^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}
import re

regex = r"^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$"

match = re.match(regex, '100101')
if match:
    print("有效邮政编码")
else:
    print("无效邮政编码")
quot;
match = re.match(regex, '100101') if match: print("有效邮政编码") else: print("无效邮政编码")