[英]Check string by user-given regex
我是我的Django應用程序之一,我需要使用標志進行字符串驗證。 我的意思是:在管理面板中,例如添加:
baduser*@gmail.com
spambot-?@gmail.com
等等...
不會有嚴格的pythonic正則表達式,但是'*'或'?' 由普通管理員提供
有人注冊時,我必須通過Python regex檢查所有這些憑據。 我需要檢查:
*
作為任何符號,一次或多次 ?
作為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))
該函數返回現成的正則表達式:
>>> translate_pattern('baduser*@gmail.com').search('baduser12345@gmail.com')
<_sre.SRE_Match object at 0x107467780>
>>> translate_pattern('baduser*@gmail.com').search('gooduser@gmail.com')
請注意,因為您在匹配.
與任何字符一樣,以下內容也匹配:
>>> translate_pattern('baduser*@gmail.com').search('baduser12345@gmail-com')
<_sre.SRE_Match object at 0x1074677e8>
因為.
匹配gmail-com
中的-
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.