2017-10-23 6 views
0

がで言及したほぼすべての有効および無効な電子メールアドレスを検証しているOracleで有効な電子メールをチェックしますhttps://blogs.msdn.microsoft.com/testing123/2009/02/06/email-address-test-cases/正規表現は、正規表現以下

コード:

DECLARE 
    v_email webowner.person.email%TYPE; 
    v_constant CONSTANT VARCHAR2(300) := '^(([a-zA-Z0-9"_\-])((\.?[a-zA-Z0-9_\/%+="''\-]+)\.?[a-zA-Z0-9+-]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\]))$'; 
    BEGIN 
     v_email := '[email protected]'; 
    if regexp_like(v_email, v_constant) then 

     pl('YES: ' || v_email); 
    else 
     pl('NO: ' || v_email); 
    end if; 
    END; 

しかし、条件が、今生じ、それは2の最小値を期待しています私は1つの必須の文字を持つ必要があります(ユーザー名の部分に "@"の前に)。

[email protected] 
+1

それはそれだではありません。ここにいくつかの読書である、ことをやりますimple、https://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-addressを参照してください。 –

答えて

0

最も簡単な方法は、それが([a-zA-Z0-9"_\-])

あるしかし、一般的には、正規表現を含む電子メールを検証しません、ちょうど最初の文字を削除することです。あなたがそうするならば、あなたはそれが間違っていることをかなり確信することができます。電子メールアドレスを検証する最も良い方法は、確認メールを送信することです。あなたは、いくつかの理由で、実際に正規表現を使用する場合は

は、私はこのようなものをお勧めします:

^.*@.+$ 

これが唯一の要件は、それが続く「@」を持つべきであるということであることを意味し少なくとも1つの文字。また、それが@前に少なくとも一つの文字を持っていることを保証するためにこれを使用することもできます。

^[email protected]+$ 

ありアドレスの規格があり、すべてではない電子メールサーバーがこれらの規格に準拠しています。標準では許可されていないアドレス[email protected]または@domain.comを扱うメールサーバーを設定することは完全に可能です。しかし、アドレスが機能する場合、なぜそれを防ぐのですか?まもなく、@の左側のすべてがサーバーによって処理されるようになっているので、それを検証しないでください。

実際に、このような電子メールを検証するために私が見ることができる唯一の理由は、ユーザーが電子メールアドレスの代わりに電話番号または名前などを入力しなかったことを確認することです。あなたは、有効な正規表現となぜあなたはいけないを実装する方法の詳細については

^.*@.*$ 

:この目的のために、それはちょうどあなたがこれを行うことができ、アドレスは「@」が含まれていることを確認するには完全に十分です

http://www.regular-expressions.info/email.html

https://davidcel.is/posts/stop-validating-email-addresses-with-regex/

Using a regular expression to validate an email address