2017-07-21 11 views
-2

誰かが助けてくれる?有効なメールチェックエラー

login_mail = raw_input("Email >> ") 
login_password = raw_input("Password >> ") 
print "[+]Wait Check For Valid Email Address." 
match = re.search(r"(^[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9]+\.[a-zA-Z0-9.]*\.*[com|org|edu]{3}$)",login_mail) 
while login_mail != match: 
    print "error.." 
    login_mail = raw_input("Email >> ") 
else: 
    print "good" 

私は、有効な電子メールの例に入れてプログラム([email protected])を起動し、それがerror..

任意のヘルプを表示しますか?

+0

'if match:'、実際にあなたのケースでどのような 'match'のドキュメントをチェックしてください。 – jordanm

+0

're.search()'が 'login_mail'と同じ内容の文字列を返すのではなく、' while'を 'while match:'にすることをお勧めします。 'match'は' none'と等しくなります。これは 'while'ループが動作しないことを意味します –

+1

また、あなたの正規表現は多くの有効な電子メールアドレスを無効と報告します。 – jordanm

答えて

1

re.searchMatchObjectを返します。参照:

https://docs.python.org/2/library/re.html#regular-expression-objects

は、あなたがにwhileループ条件を変更することで、この問題を解決することができます

while not match: 
    print 'error' 
    login_mail = raw_input('Email >> ') 
    match = re.search(...) 

それはときがそうであるようあなたは(Noneを返す検索をチェックするwhileループでnot matchを必要とします一致しません)。 login_mai lとの一致を必ずしも比較する必要はありません。一致がNoneでない場合は、login_mailとなるためです。正当な電子メールを確認するために、より良い正規表現が潜在的にありますが、あなたが持っているものは合理的な場所です。

あなたの試合のテキストにアクセスしたい場合は、match.group(0)のような何かをして、最初にキャプチャしたグループを返します。

あなたはまだマッチオブジェクトを再計算する必要があるという問題があります。

+0

ねえ、私は[email protected]と言うと良いと言いますが、テストをするとエラーが出て、再度メールを送って欲しいと言います。 .. look http://prntscr.com/fykysf – Inj3ct0r

+0

whileループ内で一致を更新する必要があります。 – dashiell

+0

私はあなたを理解していません:/ – Inj3ct0r