0

私は Django アプリの 1 つです。フラグを使用して文字列の検証を行う必要があります。つまり、管理パネルで、たとえば次のように追加します。

  • baduser*@gmail.com
  • spambot-?@gmail.com

等...

厳密な pythonic 正規表現はありませんが、「*」または「?」共通管理者提供

誰かがサインアップしている間、Python regex ですべての資格情報をチェックする必要があります。確認する必要があります:

  • *任意の記号として、1 回または複数回
  • ?1のサインとして。

どうすればそれを作ることができますか?

4

1 に答える 1

5

それを正規表現に変換し、それを使用して電子メール アドレスと照合します。

それはそれほど難しいことではありません:

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>

はinと.一致するためです。-gmail-com

于 2013-02-25T11:43:46.823 に答える