🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 购买限制 > ###格式为 限制说明####限制正则 如匹配身份证出生日期为19900917的人。则:身份证生日必须是1990年9月17号生日的,用于周年庆####/^\d{6}19900917\d{3}([0-9]|X)$/ 限制正则采用php标准的正则表达式,不可添加修饰符。望知悉。 ## ***提示:*** 这种限制非常影响性能,请注意避免滥用。 ### 基础例子: * 基础的身份证校验规则如下:注意这种月份为0230的错误匹配项也会匹配。 * 基础例子: `/^\d{6}(19\d{2}|[2-4]\d{3})((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/` . 此规则最仅1900年到4999年的身份证。 * 如果不做年份校验 `/^\d{10}((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/`; * 匹配开头3位为411的身份证号 `/^411\d{3}(19\d{2}|[2-4]\d{3})((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/` * 匹配开头3位为411和421和321的身份证号 `/^(411|421|321)\d{3}(19\d{2}|[2-4]\d{3})((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/` * 只有九省市可购买,福建,江西,湖南,广东,广西,海南,四川,贵州,云南,香港,澳门 `/^(35|36|43|44|45|46|51|52|53|81|82)\d{4}(19\d{2}|[2-4]\d{3})((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/` * 匹配身份证生日为1993年10月17号的身份证号 `/^\d{6}19931017\d{3}([0-9]|X)$/` * 限制南通市民(3206开头)的身份证号购买。即匹配所有非3206开头的身份证此门票仅限非南通市民购买 `/^((?!^3206).)*$/`,这会匹配所有3206开头的数字串,但没有校验身份证位数和身份证年月日信息。需注意。 `/^(320[0-5,7-9]|32[1-9]\d|3[0,1,3-9]\d{2}|[0-2,4-9]\d{3})\d{10}\d{3}([0-9]|X)$/` ,这会匹配所有3206开头的18位身份证数字串。如果不校验才能。 ### 身份证前两位说明 华北地区:北京市|11,天津市|12,河北省|13,山西省|14,内蒙古自治区|15, 东北地区: 辽宁省|21,吉林省|22,黑龙江省|23, 华东地区: 上海市|31,江苏省|32,浙江省|33,安徽省|34,福建省|35,江西省|36,山东省|37, 华中地区: 河南省|41,湖北省|42,湖南省|43, 华南地区:广东省|44,广西壮族自治区|45,海南省|46, 西南地区: 四川省|51,贵州省|52,云南省|53,西藏自治区|54,重庆市|50, 西北地区: 陕西省|61,甘肃省|62,青海省|63,宁夏回族自治区|64,新疆维吾尔自治区|65, 特别地区:台湾地区(886)|71,香港特别行政区(852)|81,澳门特别行政区(853)|82 * * * * * ###详细说明: 以此为例讲述: * `/^\d{6}(19\d{2}|[2-4]\d{3})((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/` * 基础知识: * `/^` 开头必须是 `$/` 结尾 * `()` 代表的是优先级,就是括号内看成一个整体 ,`[]` 就是匹配括号内的其中一个,`{}`就是匹配几次 * `\d ` 代表一位数字 `\d{6}` 表示6位数字填充000000~999999 * `[1|2]` 1或者2 * `(19\d{2}|[2-4]\d{3})` 表示1900~1999或者2000~4999 * `((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])` 匹配月份日期。月份01到12,日期01到31,单独使用时需注意可能会出现0231这种。如果和身份证识别放在一起就不算事儿了。 * `\d{3}([0-9]|X)` 这里匹配的是身份证后四位。最后一位能为大写的X > `/^(320[0-5,7-9]|32[1-9]\d|3[0,1,3-9]\d{2}|[0-2,4-9]\d{3})\d{2}((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/` ,这会匹配所有3206开头的18位身份证数字串。如果不校验才能。规则限制从准确到模糊。先限制准确的3206再一步步不限制。不过执行效率并不高。 1. `(320[0-5,7-9]|32[1-9]\d|3[0,1,3-9]\d{2}|[0-2,4-9]\d{3})`; * `320[0-5,7-9]` 此项匹配除3206的所有320开头的四位数字,继续扩大选取的范围。把除了321到329开头的都匹配进来 * `32[1-9]\d`, 匹配321到329,320开头的规则已经设置了,所以这里不在匹配320了,\d表示一位数字 * `3[0,1,3-9]\d{2}`, 匹配除32的所有3开头的数字,\d{2}表示两位数字 * `[0-2,4-9]\d{3}`, 因为3开头的规则已经设置过了,这里设置所有非3开头的规则。 2. `((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])` 匹配月份日期。月份01到12,日期01到31,单独使用时需注意可能会出现0231这种。如果和身份证识别放在一起就不算事儿了。 3. `\d{3}([0-9]|X)` 这里匹配的是身份证后四位。最后一位能为大写的X