2013-04-24 7 views
8

Gmailアドレスを検証するための式を作成しようとしています。 これまで私が行ってきたことです。正規表現 - Gmailアドレスを確認する

^([\ w] [\ w。](?!。)@ gmail.com)Gmailアドレスを検証する式を作成しようとしています。 これまで私が行ってきたことです。

しかし、私が望むように動作していません。

Gmailアドレス:[。-Z0-9]

  1. まず、最後の文字のユーザー名の内容のみ[-Z0-9]
  2. にする必要があり
  3. 連続した期間が存在することはできません(i.e: [email protected] [This is wrong])
  4. ユーザ名の長さは6〜30文字でなければなりません。

正直言って、私は正規表現に多くの経験がありません。

ところで、正規表現のドキュメントはありますか? Gmailのマッチングのための

+1

です6 **英数字**(ドットは含まれません!)。 –

+3

これは* GMailアドレスの特定の要件を前提とした割り当てであれば問題ありませんが、あなたが述べた要件はGMailが実際に強制する要件ではありません。名前の中のダブルドットは '+'で始まる接尾辞と同様に許可されます(無視されます)。 name部分と "gmail.com"ドメイン名は大文字と小文字を区別しないため、大文字を使用することができます。私はすべてのルールを知らない。あなたの実際の目標は何ですか? (Gmailアドレスと* only * gmailアドレスを検証するアプリケーションを考えるのは難しい) –

+2

@KeithThompsonの返信を拡大する。 正規表現の要件は、Gmailアドレスの**申し込み条件**を満たしています。 あなたは、gmailがあなたのユーザ名の最後に+を付け加えることができるという事実を見落としています。また、任意の数の点を追加することもできます(ユーザー名の先頭と最後にも同様です)。また、大文字とは異なる住所を受け入れます。 あなたの仕様が間違っていると、実世界で役に立たないことを求めた正規表現が作成されます。あなたは[公式に準拠した正規表現](http://stackoverflow.com/a/201378/1208914) – stormCloud

答えて

14

どの正規表現の実装を使用しているかはわかりませんでした。

^[a-z0-9](\.?[a-z0-9]){5,}@g(oogle)?mail\.com$ 
  • [a-z0-9]最初の文字の英数字を、以下の
  • (\.?[a-z0-9]){5,}少なくとも5つは、多分ドットが先行
  • g(oogle)?mailは、Gmailやgooglemail(参照(クリストファーの答え@からコピーされたダニエルさんのコメント、@参照)@ alrocの答え)

おそらく、大文字と小文字を区別しないパターンマッチングも使いたいでしょう。 (JavaScriptの/.../i。)

+0

'a @ gmail.com'は'? 'のためにマッチします、それは意図していますか? –

+0

@ChristopherCreutzig、そうではありませんでした。修正されました。ありがとう! – kay

+0

また、 '{4、}'はドットもカウントします。先読みを必要としない、あるいは先読みする必要のない代替手段については、私の答えを見てください。 –

7

単純な正規表現:

^[\w.+\-][email protected]\.com$ 

マッチ、文字列の先頭に続い\w(英数字またはアンダースコア文字)または.または+または-、1回以上、存在する場合文字列の最後に@gmail.com

regexpalでテストできます。

ところで、正規表現のドキュメントはありますか? http://www.regular-expressions.info/ は、あなただけの「mylanguageの正規表現」をgoogleingで使用している特定の言語のためのより多くの助けがあります:これは正規表現のドキュメントへのリンクは

です:あなたの他の質問に答えるには

Google is your friend :)

+0

ありがとう、役に立つリンク – Erich

+1

ありがとう、これは私が欲しいものではありません。あなたの表現はこれらの例(.aabb @ gmail.com | aa..bb @ gmail.com | aabb。@ gmail.com)と一致し、これは間違っています。 –

+0

あなたは '\ W'をどうしますか? – kay

0

+0

ありがとうございます。それは助けになるだろう。 –

1

正規表現のドキュメントはたくさんありますが、あなたの環境にある正規表現の特定のフレーバーに一致するものを取得する必要があります。はい、多くの方言があります。 「マスタリング正規表現」と言われるのは、私が知る限り、依然として究極の参照です。

ご質問のように、私はおそらく

^[a-z0-9](\.?[a-z0-9]){5,}@gmail\.com$ 

警告を使用したい:あなたが与えたルールが正しい場合、私はチェックしませんでした。一般的に、電子メールアドレスはそれらをフォローしません。

+0

ありがとう、クリストファーですが、 '^ [a-z0-9]( \。?[a-z0-9]){5,29} @gmail \ .com $ 'はこの' [email protected]'と一致し、これは私が望むものではありません。それが私がケイの答えを受け入れた理由です。 –

+0

もちろん、あなたが正しいと思うものはすべて受け入れるべきですが、2番目のテストでその制限を置いてしまったので、 '{5,29} 'と書かなかったという事実を別にすれば、私はどのようにケイの答えは本当に私のものとは違う。私が見る限り、今まで私が提案したローカル部分をコピーし、以前のバージョンでは少なくとも6つのドット以外の文字の存在をチェックしませんでした。 –

1

有効な電子メールアドレスを構成するものはRFC 2822で指定されています。これについてはhereを参照してください。しかし、そのページが指摘しているように、実際に読んで理解することなく、それを受け入れることはできません。

住所が常に@gmail.comで終わることを期待しているので、あなたはここで優位です。正規表現の範囲が狭くなります(@で分割し、前半のみを検証できます)。

ところで、GMailは世界中のgmail.comではありません。英国とドイツでは、googlemail.comもあります。

正規表現にはウェブ上のドキュメントがたくさんありますが、使用しているライブラリ/エンジンがどのように処理しているかを必ず確認してください。実装間にはわずかな違いがあります。

+0

ありがとう、この情報は本当に役立ちます。 –

-1

おそらく、あなたは 検証GmailやGoogleがこれはすべての電子メールアドレスを検証する電子メールアドレスの正規表現である http://regxer.com/post.php?post_id=20

0
/([a-zA-Z0-9]+)([\_\.\-{1}])?([a-zA-Z0-9]+)\@([a-zA-Z0-9]+)([\.])([a-zA-Z\.]+)/g 

に対処し、ここでそれを試してみることができます。

  1. ([-ZA-Z0-9] +) - 、AZを有することができ、最初の単語のためのAZと一致し、そして0-9
  2. ([_.- {1}]であろう) - _、 - 、。最初の単語の後に
  3. - 先行するトークンの0(偽)と1(真)の間で一致します。
  4. ([-ZA-Z0-9] +)から @ AZ、AZ、および0-9
  5. \を持つことができる2番目の単語のために一致します -
  6. @特殊文字と一致しますドメイン名が@
  7. ([。]) - と一致すると、一致するようになります。
  8. ([a-zA-Z。] +) - com、co.in、orgなどのメールIDの最後の単語と一致します。

しかし、GmailはGmailのメールアドレスをそれほど使用するその他の特殊文字を許可しない正規表現はこれより容易になりますと、下記のようになります。

/([a-zA-Z0-9]+)([\.{1}])?([a-zA-Z0-9]+)\@gmail([\.])com/g 
  1. ([A -ZA-Z0-9] +) - az、AZ、および0-9を持つことができる最初の単語に一致します。
  2. ([。{1}]) - が一致します。最初の単語の後に
  3. - 先行するトークンの0(偽)と1(真)の間で一致します。
  4. ([-ZA-Z0-9] +)から @ AZ、AZ、および0-9
  5. \を持つことができる2番目の単語のために一致します -
  6. @特殊文字と一致しますgmail - @
  7. ([。])の後にドメイン名であるgmailという単語と一致します。
  8. コム - コム
1

になります電子メールIDの最後の最後の言葉と一致します。このために私のソリューションは、 `` @は、少なくともなければならない部分の前に、また^[a-zA-Z][-_.a-zA-Z0-9]{5,29}@g(oogle)?mail.com$