0

EMAIL 正規表現を作成しようとしています。これは私が達成しようとしているものです:

「_A-Za-z0-9-」、オプションで「.[_A-Za-z0-9-]」が続き、「@」記号で終わります。メールのドメイン名は「A-Za-z0-9」で始まり、その後に第 1 レベルの Tld (.com、.net) 「.[A-Za-z0-9]」が続き、オプションで第 2 レベルの Tld ( .com.au、.com.my) 「.[A-Za-z]{2,}」、ここで、第 2 レベルの Tld はドット「.」で開始する必要があります。長さは 2 文字以上である必要があります。

これは私がこれまでに持っているものです:

([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\w?\.[A-Za-z]{2,})

私のために働いていません。これらのメールを検証してほしい:

myname@compgg.com
ffdicot@foobar.com.au
i3dicot@foobar.co.uk

ではない:

myname@foobar.foo.bar.com

助言がありますか?

4

1 に答える 1

0

しないでください。

これは、RFC2822 に対応する正規表現です。

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

それぞれが異なる要件をチェックする個別の関数として実装することをお勧めします...

于 2012-09-24T14:25:28.500 に答える