2010-12-29 15 views
1

可能性の重複:
PHP validation/regex for URL有効なドメイン名

私はPHPで小さなアプリケーションを構築、および(E-mailアドレスでの使用のための)ドメイン名を検証する必要があるんです。たとえば[email protected]がある場合は、gmail.comが有効なドメイン名であるかどうかを確認したいと考えています(@の前に部分的に捨ててしまいます)。

私は、次のコードを使用している:

if (!preg_match ("/^[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$/i", trim($valid_emails[$i]))) { 
     // Return error 
} 

を、すべてが正常に動作しています。 GE MoneyBankがクライアントになるまで。彼らはドメインとしてge.comを使用していますが、それは合格しません。

私はregexの基本的な理解をしており、最小文字数が2になるように[a-z0-9]ブロックの一部を削除しようとしましたが、運がありません。より多くの経験を持つ方が私に正しい方向を向けることができますか?文字や数字
- [a-z0-9\-]+: - [a-z0-9]
:あなたが現在持っているどのような事前

+1

それは '.museum'のTLDのいずれかを処理しません。 。 – Quentin

+0

dupe? http://stackoverflow.com/questions/156430/regexp-recognition-of-email-address-hard http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for -validating-email-addresses – mth

+0

@David Dorward、私の答えは、すべての既知のTLDをサポートする必要があります。 –

答えて

1

おかげで、次の操作を行い文字や数字やハイフン、1回以上
を - [a-z0-9]:手紙または数字

あなたの問題は少なくとも3文字が必要です。

2文字のみを受け入れることができ、最後の文字はハイフンにすることはできません。

ですから、0回以上に途中式を変更する必要があります。
- [a-z0-9\-]*:文字や数字やハイフン、0回以上

+0

これは動作していないようです。それでも "ge.com"は無効であると言われています。 – mads

+0

私の最後に動作します。あなたはここでそれを試すことができます:http://www.spaweditor.com/scripts/regex/index.php – zsalzbank

+0

それは今動作します。間違ったファイルを編集しました。助けてくれてありがとう。 – mads

関連する問題