python正则表达式⾝份证_python常⽤校验⽅法总结
0x00 校验⼀个字符串是否是合法IP地址
ipv4举例:利⽤正则表达式来匹配
def checkip(ip): p = repile('^((25[0-5]|2[0-4]d|[01]?dd?).){3}(25[0-5]|2[0-4]d|[01]?dd?)$') if p.match(ip): return True else: return False
0x01 校验⼀个字符串是否为中⽂
python在执⾏代码过程是不知道这个字符是什么意思的、是否是中⽂,⽽是把所有代码翻译成⼆进制也就是000111这种形式,机器可以
看懂的语⾔。也就是说在计算机中所有的字符都是有数字来表⽰的。汉字也是有数字表⽰的,Unicdoe4E00~9FFF表⽰中⽂,所以如果⼀个字符的utf-8编码在这个区间内,就说明它是中⽂。
代码:
def is_Chinese(word): for ch in word: if '⼀' <= ch <= '龥': return True return False
0x02 判断⼀个unicode是否是数字
def is_number(uchar): if uchar >= u'/u0030' and uchar<=u'/u0039': return True else: return False
0x03 判断⼀个unicode是否是英⽂字母
def is_alphabet(uchar): if (uchar >= u'/u0041' and uchar<=u'/u005a') or (uchar >= u'/u0061' and uchar<=u'/u007a'): return True else: return F
0x04 主要的⾮英⽂语系字符范围
2E80~33FFh:中⽇韩符号区。收容康熙字典部⾸、中⽇韩辅助部⾸、注⾳符号、⽇本假名、韩⽂⾳符,中⽇韩的符号、标点、带圈或带括符⽂数字、⽉份,以及⽇本的假名组合、单位、年号、⽉份、⽇期、时间等。
3400~4DFFh:中⽇韩认同表意⽂字扩充A区,总计收容6,582个中⽇韩汉字。
4E00~9FFFh:中⽇韩认同表意⽂字区,总计收容20,902个中⽇韩汉字。
A000~A4FFh:彝族⽂字区,收容中国南⽅彝族⽂字和字根。
AC00~D7FFh:韩⽂拼⾳组合字区,收容以韩⽂⾳符拼成的⽂字。
F900~FAFFh:中⽇韩兼容表意⽂字区,总计收容302个中⽇韩汉字。
FB00~FFFDh:⽂字表现形式区,收容组合拉丁⽂字、希伯来⽂、阿拉伯⽂、中⽇韩直式标点、⼩符号、半⾓符号、全⾓符号等。
⽐如需要匹配所有中⽇韩⾮符号字符,那么正则表达式应该是^[/u3400-/u9FFF]+$
理论上没错, 可是我到ko随便复制了个韩⽂下来, 发现根本不对, 诡异
再到jp复制了个'お', 也不得⾏..
然后把范围扩⼤到^[/u2E80-/u9FFF]+$, 这样倒是都通过了, 这个应该就是匹配中⽇韩⽂字的正则表达式了, 包括我們臺灣省還在盲⽬使⽤的繁體中⽂
⽽关于中⽂的正则表达式, 应该是^[/u4E00-/u9FFF]+$, 和论坛⾥常被⼈提起的^[/u4E00-/u9FA5]+$很
接近
需要注意的是论坛⾥说的^[/u4E00-/u9FA5]+$这是专门⽤于匹配简体中⽂的正则表达式, 实际上繁体字也在⾥⾯, 我⽤测试器测试了下'中華⼈民共和國', 也通过了, 当然, ^[/u4E00-/u9FFF]+$也是⼀样的结果
0x05 常见的校验正则表达式
匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1)
匹配空⽩⾏的正则表达式:ns*r
评注:可以⽤来删除空⽩⾏
匹配HTML标记的正则表达式:]*>.*?|<.>
评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒
匹配⾸尾空⽩字符的正则表达式:^s*|s*$
评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实⽤
匹配⽹址URL的正则表达式:[a-zA-z]+://[^s]*
python正则表达式不包含评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实⽤
匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-******* 或 021-********
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国:[1-9]d{5}(?!d)
评注:中国为6位数字
匹配⾝份证:d{15}|d{18}
评注:中国的⾝份证为15位或18位
匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有⽤
匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配⾮负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配⾮正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配⾮负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配⾮正浮点数(负浮点数 + 0)
评注:处理⼤量数据时有⽤,具体应⽤时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串
^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串
^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串
^w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串
在使⽤RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
只能输⼊数字:“^[0-9]*$”
只能输⼊n位的数字:“^d{n}$”
只能输⼊⾄少n位数字:“^d{n,}$”
只能输⼊m-n位的数字:“^d{m,n}$”
只能输⼊零和⾮零开头的数字:“^(0|[1-9][0-9]*)$”
只能输⼊有两位⼩数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输⼊有1-3位⼩数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输⼊⾮零的正整数:“^+?[1-9][0-9]*$”
只能输⼊⾮零的负整数:“^-[1-9][0-9]*$”
只能输⼊长度为3的字符:“^.{3}$”
只能输⼊由26个英⽂字母组成的字符串:“^[A-Za-z]+$”
只能输⼊由26个⼤写英⽂字母组成的字符串:“^[A-Z]+$”
只能输⼊由26个⼩写英⽂字母组成的字符串:“^[a-z]+$”
只能输⼊由数字和26个英⽂字母组成的字符串:“^[A-Za-z0-9]+$”
只能输⼊由数字、26个英⽂字母或者下划线组成的字符串:“^w+$”
验证⽤户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。验证是否含有^%&',;=?$"等字符:“[^%&',;=?$x22]+”
只能输⼊汉字:“^[u4e00-u9fa5],{0,}$”
验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”, “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
验证⾝份证号(15位或18位数字):“^d{15}|d{}18$”
验证⼀年的12个⽉:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”验证⼀个⽉的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
正确格式为:“01”“09”和“1”“31”。
匹配中⽂字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空⾏的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/.*|/
匹配⾸尾空格的正则表达式:(^s*)|(s*$)
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论