必须包含字母【且或】数字的正则
⼀、必须包含字母或数字的正则
>>>re.search(r'[0-9a-zA-Z]+','abc9800H')
⼆、必须包含字母且数字的正则
这个正则拆分来看
理解⼀个规则:后向否定:
a(?!xxxx) 即a后⾯不是xxxx才能匹配到
^(?!xxxx) 即开后不能是xxxx才能匹配
1、不能全是字母怎么写
>>> re.search(r'^(?![a-zA-Z]+$)[0-9a-zA-Z]+','22jj55')
<_sre.SRE_Match object; span=(0,6), match='22jj55'>
>>> re.search(r'^(?![a-zA-Z]+$)[0-9a-zA-Z]+','jjj2255hfh')
<_sre.SRE_Match object; span=(0,10), match='jjj2255hfh'>
>>> re.search(r'^(?![a-zA-Z]+$)[0-9a-zA-Z]+','2255hfh')
<_sre.SRE_Match object; span=(0,7), match='2255hfh'>parse error怎么解决
2、不能全是数字怎么写
>>> re.search(r'^(?![0-9]+$)[0-9a-zA-Z]+','22jj55')
<_sre.SRE_Match object; span=(0,6), match='22jj55'>
>>> re.search(r'^(?![0-9]+$)[0-9a-zA-Z]+','jjj2255hfh')
<_sre.SRE_Match object; span=(0,10), match='jjj2255hfh'>
>>> re.search(r'^(?![0-9]+$)[0-9a-zA-Z]+','2255hfh')
<_sre.SRE_Match object; span=(0,7), match='2255hfh'>
3、不能全是字母或数字怎么写
>>> re.search(r'^(?![0-9]+$)(?![a-zA-Z]+$)[0-9a-zA-Z]+','22jj55')
<_sre.SRE_Match object; span=(0,6), match='22jj55'>
三、⼀个疑问,为什么必须加$
1、如果没有$符号,[0-9]+连续全是数字,开头^限制,开头不能是数字就可以了,其余不做限制
>>> re.search(r'^(?![0-9]+)[0-9a-zA-Z]+','22jj55')
>>> re.search(r'^(?![0-9]+)[0-9a-zA-Z]+','jj55')
<_sre.SRE_Match object; span=(0,4), match='jj55'>
>>> re.search(r'^(?![0-9]+)[0-9a-zA-Z]+','jj')
<_sre.SRE_Match object; span=(0,2), match='jj'>
2、如果有KaTeX parse error: Expected group after '^' at position 35: …不符合连续数字的结果集,再加上^限制,则不能匹配从头到尾连续多个数字,即不能全是数字
>>> re.search(r'^(?![0-9]+$)[0-9a-zA-Z]+','22jj55')
<_sre.SRE_Match object; span=(0,6), match='22jj55'>
>>> re.search(r'^(?![0-9]+$)[0-9a-zA-Z]+','jjj2255hfh')
<_sre.SRE_Match object; span=(0,10), match='jjj2255hfh'>
>>> re.search(r'^(?![0-9]+$)[0-9a-zA-Z]+','2255hfh')
<_sre.SRE_Match object; span=(0,7), match='2255hfh'>
待解决疑问:为什么不是开头不能是数字,结尾不能是数字??
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论