-3

ユーザーにメールアドレスの入力を求める HTML フォームがあります。メールの形式が first.last@example.com の場合のみ、続行/フォームを送信できます。

「最初」と「最後」は何でもかまいませんが、「.」が必要です。途中で、「@example.com」で終わる必要があります。そのために使用できる正規表現を誰か教えてもらえますか?

4

4 に答える 4

2

このようなものが機能するはずです。

r'^([^@.]+)\.([^@.]+)@example\.com$'
  • ^文字列の先頭に一致します。
  • $終わりに一致します。
  • と書くことで、文字列が正規表現とまったく同じ^...$ように見えることを確認します。のようなものは一致しません。foo.bar@example.comasdfg
  • [^@.]+@またはではない連続した文字のシーケンスに一致します.

非正規表現ソリューションは次のようになります。

def validate_email(email):
    if not email.endswith('@example.com'):
        return False

    chunks = email.split('.')

    return len(chunks) == 3 and all(chunks)
于 2013-01-31T20:40:35.573 に答える
0

正規表現は必要ありません。次を使用できます。

def email_validator(email):
    if not email.endswith('@example.com'):
        return False

    if not email[:-12].count('.') == 1:
        return False
    return True

編集:@ John Y、@manu-fattoからの提案で修正

于 2013-01-31T20:41:03.093 に答える
0

私は提案しr'^(\w*?)\.(\w*?)@example\.com$'ます。これは Blender の回答と同じですが、「最初」と「最後」の内容を、大文字と小文字、数字、およびアンダースコア ( _) を含む「単語」文字に制限する点が異なります。など、より多くの文字を許可したい場合は、以下の代替バージョンで-を置き換えることで実行できます。@

r'^([\w@]*?)\.([\w@]*?)@example\.com$'

たとえば、 と を許可する場合は、次-のよう&になります。

r'^([\w&\-]*?)\.([\w&\-]*?)@example\.com$'

( の前のバックスラッシュは、文字クラス内で特別な意味を持つ-ためです。)-

于 2013-01-31T20:47:26.507 に答える
0

私はお勧めし^(.+?)\.(.+?)@example\.com$ます。部分とは、最初の部分の.+?前後に何かがなければならないことを意味します。.

于 2013-01-31T20:43:54.627 に答える