tun*_*rob 0 python regex django
我的一个Django应用程序,我需要使用标志进行字符串验证.我的意思是:在管理面板中,我添加了例如:
baduser*@gmail.comspambot-?@gmail.com等等...
不会有严格的pythonic正则表达式,但是'*'或'?' 由普通管理员提供
当有人注册时,我必须通过Python正则表达式检查所有凭据.我需要检查一下:
* 作为任何标志,一次或多次? 作为1号.任何想法我怎么能这样做?
您将其转换为正则表达式,然后使用它来匹配电子邮件地址.
这并不难:
import re
def translate_pattern(pattern):
res = []
for c in pattern:
if c == '*':
res.append('.+') # 1 or more
elif c == '.':
res.append('.') # exactly 1
else:
res.append(re.escape(c)) # anything else is a literal character
return re.compile(''.join(res))
Run Code Online (Sandbox Code Playgroud)
该函数返回预编译的正则表达式:
>>> translate_pattern('baduser*@gmail.com').search('baduser12345@gmail.com')
<_sre.SRE_Match object at 0x107467780>
>>> translate_pattern('baduser*@gmail.com').search('gooduser@gmail.com')
Run Code Online (Sandbox Code Playgroud)
请注意,由于您匹配.的任何字符,下面的比赛太:
>>> translate_pattern('baduser*@gmail.com').search('baduser12345@gmail-com')
<_sre.SRE_Match object at 0x1074677e8>
Run Code Online (Sandbox Code Playgroud)
因为.比赛-在gmail-com.
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |