#!/usr/bin/env python3
import re
from datetime import datetimedef check_phone(phone):'''三大运营商和虚拟运营商的号码'''regex_phone = r'^1(3\d|4[579]|5[0-35-9]|66|7[0135-8]|8\d|9[89])\d{8}$'if re.search(regex_phone, phone, re.S):return Truereturn Falsedef check_username(username):'''包含数字字母和汉字的用户名'''regex_username = r'[^a-zA-Z\d\u4E00-\u9FFF]'if re.search(regex_username, username, re.S):return Falsereturn Truedef check_ssn(ssn_str):'''身份证号码,使用了校验位算法'''ssn = ssn_str.upper()regex_ssn = r'^[1-9]\d{5}(18|19|[23]\d)\d{2}(0[1-9]|1[0-2])([0-2][1-9]|10|20|30|31)\d{3}[\dX]$|^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])([0-2][1-9]|10|20|30|31)\d{3}$'if not re.search(regex_ssn, ssn, re.S):return Falseif len(ssn) != 18:return Falsetry:birth_time = datetime(int(ssn[6:10]), int(ssn[10:12]), int(ssn[12:14]))if birth_time >= datetime.now():return Falseexcept:return Falseverify_code = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]verify_index = sum([int(ssn[index]) * verify_code[index] for index in range(17)]) % 11verify_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']return ssn if verify_code[verify_index] == ssn[-1] else Falsedef check_yingye(yinye_str):'''营业执照号码,使用了校验位算法'''if re.search(r'^\d{15}$', yinye_str, re.S):verify_code = 10for index in range(14):verify_code = (((verify_code % 11 + int(yinye_str[index])) % 10 or 10) * 2) % 11verify_code = (11 - (verify_code % 10)) % 10return yinye_str if str(verify_code) == yinye_str[-1] else Falsereturn Falsedef check_zuzhi(zuzhi_str):'''组织机构代码,使用了校验位算法'''zuzhi_str = zuzhi_str.upper().replace('-', '')search = re.search(r'^[\dA-Z]{8}[X\d]$', zuzhi_str, re.S)if search:verify_code = [3, 7, 9, 10, 5, 8, 4, 2]verify_code = 11 - sum([int((ord(zuzhi_str[index]) - 55) if zuzhi_str[index].isalpha() else zuzhi_str[index]) * verify_code[index] for index in range(8)]) % 11verify_code = 'X' if verify_code == 10 else ('0' if verify_code == 11 else str(verify_code))return zuzhi_str if verify_code == zuzhi_str[-1] else Falsereturn Falsedef check_shuiwu(shuiwu_str):'''税务登记证号码,使用了校验位算法'''shuiwu_str = shuiwu_str.upper()if len(shuiwu_str) == 20:if check_ssn(shuiwu_str[:15]):if re.search(r'^[A-Z\d]{5}$', shuiwu_str[15:], re.S):return shuiwu_strif check_ssn(shuiwu_str[:18]):if re.search(r'^[A-Z\d]{2}$', shuiwu_str[18:], re.S):return shuiwu_strreturn Falseelse:shuiwu_str = shuiwu_str.replace('-', '')search = re.search(r'^\d{6}[\dA-Z]{8}[X\d]$', shuiwu_str, re.S)return (shuiwu_str if check_zuzhi(shuiwu_str[6:]) else False) if search else Falsedef check_xinyong(xinyong_str):'''统一社会信用代码,使用了校验位算法'''xinyong_str = xinyong_str.upper()if len(xinyong_str) != 18:return Falsesearch = re.search(r'^(1[129]|5[1239]|9[123]|Y1)\d{6}[\dA-Z]{8}[X\d][\dA-Z]$', xinyong_str, re.S)if search:if check_zuzhi(xinyong_str[8:17]):str_to_num = {'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'G': 16, 'H': 17, 'J': 18, 'K': 19,'L': 20, 'M': 21, 'N': 22, 'P': 23, 'Q': 24, 'R': 25, 'T': 26, 'U': 27, 'W': 28, 'X': 29, 'Y': 30}num_to_str = {10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F', 16: 'G', 17: 'H', 18: 'J', 19: 'K',20: 'L', 21: 'M', 22: 'N', 23: 'P', 24: 'Q', 25: 'R', 26: 'T', 27: 'U', 28: 'W', 29: 'X', 30: 'Y', 31: '0'}verify_code = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28]verify_code = 31 - sum([(str_to_num.get(xinyong_str[index], 0) if xinyong_str[index].isalpha() else int(xinyong_str[index])) * verify_code[index] for index in range(17)]) % 31verify_code = num_to_str.get(verify_code, '') if verify_code > 9 else verify_codereturn xinyong_str if verify_code == xinyong_str[-1] else Falsereturn Falsedef check_feiyingli(feiyingli_str):'''非营利企业登记证号码'''feiyingli_str = feiyingli_str.upper().replace('-', '')if len(feiyingli_str) == 9:return check_zuzhi(feiyingli_str)elif len(feiyingli_str) == 18:return check_xinyong(feiyingli_str)return False

python结合正则表达式及校验码生成算法校验:电话号码、营业执照、组织机构代码证、税务登记证、统一社会信用代码证、非盈利性企业登记证号码的函数相关推荐

  1. JAVA生成统一社会信用代码和组织机构代码

    统一社会信用代码规则如下: 代码如下: 引入jar包下载:https://mvnrepository.com/artifact/cn.hutool/hutool-all/5.8.3 package c ...

  2. Python实现统一社会信用代码校验(GB32100-2015)

    Python实现统一社会信用代码校验 统一社会信用代码国标校验 统一社会信用代码国标校验规则 示例说明 Python代码实现(仅实现GB- 32100-2015中的规则) 统一社会信用代码国标校验   ...

  3. JS校验统一社会信用代码的真实性

    统一代码的构成 结构 代码及说明 统一社会信用代码来源字符与数值对应关系表 统一社会信用代码相应顺序上对应的加权因子 计算示例 js代码实现 统一社会信用代码:每一个法人和其他组织在全国范围内唯一的. ...

  4. Python实现统一社会信用代码合法性校验

    Python实现统一社会信用代码合法性校验 1 统一代码的构成 1.1 结构 ​ 统一代码由十八位的阿拉伯数字或大写英文字母(不使用I.O.Z.S.V)组成,包括第1位登记管理部门代码.第2位机构类别 ...

  5. java、正则表达式、php校验“统一社会信用代码”

    java import java.util.HashMap; import java.util.Map; /** * Desc: 社会信用代码证 检验 * Created  2016/5/18. */ ...

  6. Python通过前16位生成统一社会信用代码

    # -*- coding: utf-8 -*- # 统一社会信用代码中不使用I,O,Z,S,V SOCIAL_CREDIT_CHECK_CODE_DICT = {'0': 0, '1': 1, '2' ...

  7. 计算统一社会信用代码的校验码(Lua)

    输入 法人和其他组织统一社会信用代码的前16/17位 输出 检查登记管理部门代码(第1位)和机构类别代码(第2位)是否合法: 检查登记管理机关行政区划码(第3-8位)是否合法: 检查组织机构代码的本体 ...

  8. Python随机生成企业及统一社会信用代码

    import random import string# 随机生成企业名称 def generate_company_name():prefix = ['ABC', 'XYZ', 'ACME', 'B ...

  9. hive自定义函数实现组织机构代码、统一社会信用代码校验

    一.根据中华人民共和国国家标准全国组织机构代码(9位)编制规则实现规则校验 1.组织机构代码编码规则 1.1组织机构代码的组成 全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉 ...

最新文章

  1. Linux系统编程——进程基础知识
  2. pytorch loss inf
  3. 【BZOJ 3036】 3036: 绿豆蛙的归宿 (概率DP)
  4. 【MFC】工具栏按钮的热点效果
  5. flex datagrid 导出csv
  6. php debug_print_backtrace,php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
  7. Rendering Linear lighting and color
  8. org.neo4j.kernel.StoreLockException: Store and its lock file has been locked by another process
  9. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第5天
  10. C语言程序设计第一次实验
  11. openDrive has Free Direct Linking !
  12. 磁碟机病毒(Dummycom)专杀工具
  13. coreldraw x7对齐快捷键_CDR基础CorelDraw X7中文版快捷键大全
  14. 关于LeapFTP连接超时/连接失败问题
  15. excel打不开服务器上的文件夹,Excel打不开的原因及解决方法汇总
  16. 2010年郑州注册物业管理师培训
  17. 计算机怎么搜索隐藏的网络,电脑如何连接隐藏wifi 笔记本电脑如何添加隐藏wifi?-192路由网...
  18. 孔雀东南飞用mysql存储_【原】一个真实的故事,现实版的《孔雀东南飞》
  19. git公钥生成以及日常操作
  20. Larry wall - Perl之父

热门文章

  1. 观古之四大名著《水浒传》有感
  2. android面试!一线互联网移动架构师设计思想解读开源框架!复习指南
  3. c语言百变图形,百变图标app官方版-百变图标更换图标app下载v1.0.0-西西软件下载...
  4. 前端程序员偷懒工具:emmet语法
  5. 前端开发的就业前景和收入怎么样啊
  6. apache评分条件_APACHE Ⅲ 评分标准.doc
  7. 鼠标滑轮只能控制声音?
  8. Matlab 极坐标平面 插值,如何在极坐标中进行插值
  9. VUE-鼠标移入到目标区域变成小手模样
  10. petya病毒分析_首先是WannaCry,现在是Petya –防范大规模勒索软件攻击