简单验证用户输入身份证号和手机号

import re
r=r'^([1-9]\d{5}[12]\d{3}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{3}[0-9xX])$'
result = re.match(r,'1234567891011121314')
if not result:
    print('请输入正确的身份证号!')
第一位1-9  [1-9]

后面5位数字0-9 \d{5}

年份:1或2开头,后面三位数字0-9 [12]\d{3}

月份:0开头接1-9或1开头接012  [0][1-9]|1[012]

日期:0开头接1-9或1、2开头接0-9或3开头接0,1  0[1-9]|[12][0-9]|3[01]

3位数字0-9 \d{3}

最后一位为数字或X或x   \d|X|x
r = re.compile('^(13\d|14[5|7]|15\d|166|17[3|6|7]|18\d)\d{8}$')
result = re.fullmatch(r,'12345678910')
if not result:
    print('请输入正确的手机号码')

 

验证用户身份正好的合法性(较复杂,根据需求选择)【来自网络,仅供大家需要时参考】

 1 import re
 2 
 3 # Errors=['验证通过!','身份证号码位数不对!','身份证号码出生日期超出范围或含有非法字符!','身份证号码校验错误!','身份证地区非法!']
 4 def checkIdcard(idcard):
 5     Errors = ['验证通过!', '身份证号码位数不对!', '身份证号码出生日期超出范围或含有非法字符!', '身份证号码校验错误!', '身份证地区非法!']
 6     area = {"11": "北京", "12": "天津", "13": "河北", "14": "山西", "15": "内蒙古", "21": "辽宁", "22": "吉林", "23": "黑龙江",
 7             "31": "上海", "32": "江苏", "33": "浙江", "34": "安徽", "35": "福建", "36": "江西", "37": "山东", "41": "河南", "42": "湖北",
 8             "43": "湖南", "44": "广东", "45": "广西", "46": "海南", "50": "重庆", "51": "四川", "52": "贵州", "53": "云南", "54": "西藏",
 9             "61": "陕西", "62": "甘肃", "63": "青海", "64": "宁夏", "65": "新疆", "71": "台湾", "81": "香港", "82": "澳门", "91": "国外"}
10     idcard = str(idcard)
11     idcard = idcard.strip()
12     idcard_list = list(idcard)
13     # 地区校验
14     if (not area[(idcard)[0:2]]):
15         print(Errors[4])
16     # 15位身份号码检测
17     if (len(idcard) == 15):
18         if ((int(idcard[6:8]) + 1900) % 4 == 0 or (
19                 (int(idcard[6:8]) + 1900) % 100 == 0 and (int(idcard[6:8]) + 1900) % 4 == 0)):
20             erg = re.compile(
21                 '[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$')  # //测试出生日期的合法性
22         else:
23             ereg = re.compile(
24                 '[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$')  # //测试出生日期的合法性
25         if (re.match(ereg, idcard)):
26             print(Errors[0])
27         else:
28             print(Errors[2])
29     # 18位身份号码检测
30     elif (len(idcard) == 18):
31         # 出生日期的合法性检查
32         # 闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
33         # 平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
34         if (int(idcard[6:10]) % 4 == 0 or (int(idcard[6:10]) % 100 == 0 and int(idcard[6:10]) % 4 == 0)):
35             ereg = re.compile(
36                 '[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$')  # //闰年出生日期的合法性正则表达式
37         else:
38             ereg = re.compile(
39                 '[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$')  # //平年出生日期的合法性正则表达式
40         # //测试出生日期的合法性
41         if (re.match(ereg, idcard)):
42             # //计算校验位
43             S = (int(idcard_list[0]) + int(idcard_list[10])) * 7 + (int(idcard_list[1]) + int(idcard_list[11])) * 9 + (
44                         int(idcard_list[2]) + int(idcard_list[12])) * 10 + (
45                             int(idcard_list[3]) + int(idcard_list[13])) * 5 +(int(idcard_list[4])+int(idcard_list[14])) * 8 + (
46                             int(idcard_list[5]) + int(idcard_list[15])) * 4 + (
47                             int(idcard_list[6]) + int(idcard_list[16])) * 2 + int(idcard_list[7]) * 1 + int(
48                 idcard_list[8]) * 6 + int(idcard_list[9]) * 3
49             Y = S % 11
50             M = "F"
51             JYM = "10X98765432"
52             M = JYM[Y]  # 判断校验位
53             if not idcard_list[17] != M:  # 检测ID的校验位
54                 print(Errors[0])
55             else:
56                 print(Errors[3])
57         else:
58             print(Errors[2])
59     else:
60         print(Errors[1])
View Code

 

转载于:https://www.cnblogs.com/songxiaohua/p/9093889.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue 3中实现输入验证可以通过使用vue-validate库来简化操作。下面是一个示例代码,演示如何实现身份证和号码的输入验证: 首先,安装`vue-validate`库: ```bash npm install vue-validate ``` 然后,在需要使用验证的组件中引入并注册`vue-validate`: ```javascript import { createApp } from 'vue'; import { validate } from 'vue-validate'; const app = createApp(App); app.use(validate); app.mount('#app'); ``` 接下来,在模板中添加需要验证输入框,并使用`v-validate`指令绑定验证规则: ```html <template> <div> <input type="text" v-model="idCard" v-validate="'required|idCard'" placeholder="请输入身份证号码"> <input type="text" v-model="phoneNumber" v-validate="'required|phoneNumber'" placeholder="请输入手机号码"> <!-- 显示错误信息 --> <div v-if="errors.has('idCard')"> {{ errors.first('idCard') }} </div> <div v-if="errors.has('phoneNumber')"> {{ errors.first('phoneNumber') }} </div> </div> </template> ``` 最后,在组件的`data`选项中定义对应的数据属性,并在`methods`中添加验证规则: ```javascript export default { data() { return { idCard: '', phoneNumber: '' }; }, methods: { validateForm() { this.$validate().validateAll().then(() => { // 验证通过,执行其他逻辑 console.log('验证通过'); }).catch(() => { // 验证失败 console.log('验证失败'); }); } } } ``` 这样就完成了在Vue 3中实现身份证和号码输入验证的过程。当输入不符合验证规则,会显示对应的错误信息。你可以根据实际需求修改验证规则和错误信息的显示方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值