2016-06-16 10 views
1

私はjavaで電子メールを検証しようとしています。以下のコードされています。今、私は5つの文字に10の文字とテキスト3の長さに[テキスト1]と[テキスト2]の長さを制限したい電子メールの検証でJava正規表現の問題

String mail = "[email protected]"; 
    String regex = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 
    if(mail.matches(regex)){ 
     System.out.println("valid email"); 
    }; 

私はこの正規表現を試みたが、うまくいきませんでした - 私はこれを達成するにはどうすればよい ^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]{2,}+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

?おかげさまで ここで

+0

あなたの要件に応じて間違っているはずの正しいものと正しいものとを扱ったメールの例があるとよいでしょう。 –

+0

また、これらのメールにtext1/text2/text3と考える部分を表示してください。 –

+0

これはしないでください。 '。+ @。+'や '。+ @。+ \ .. +'のようなものを使ってください。異なるプロバイダは電子メールアドレスに異なる文字を許可します。電子メールアドレスの指定によれば、エスケープすると、実際にそこに任意の文字を置くことができます。例えばGmailでは@の前にプラス記号を付けることができますが、正規表現では扱いません。また、実際には、電子メールアドレスの指定に従って無効な最初の文字としてgmailがドットを許可します。 –

答えて

0

は正規表現です:

String regex = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]{0,10})*@[A-Za-z0-9]+(\\.[A-Za-z0-9]{0,10})*(\\.[A-Za-z]{0,5})$"; 

これは{n, m}構文を使用し、それはnとmの出現の間になるように文字数を制限し、文字としてのドットをカウントされません。

関連する問題