2016-09-22 22 views
-1

私はドメイン名(example1.commerce)は、次の正規表現にマッチしない理由を把握しようとしている:PHPの単純なドメインの正規表現

if (!preg_match('([a-z\d]){1,63}(\.)([a-z\d]){2,16}',$_POST['domain'])) 
{ 
echo '<p>Error: domain is not valid.</p>'; 
} 
else {echo '<p>Domain looks good.</p>';} 

パターンが唯一のドメインと一致する必要があります(1〜 63文字)とドメインサフィックス(2〜16文字)。

+3

正規表現の区切り文字 - '/([a-z \ d]){1,63}(\。)([a-z \ d]){2,16} /' 'を使用します。おそらくアンカーと '/ i'修飾子を使い、冗長グループを削除します:'/^ [az \ d] {1,63} \。[az \ d] {2,16} $/i'' –

+0

@WiktorStribiżewAh答えとして投稿してください、私は受け入れます。何らかの理由で 'preg_match'で表現を組み合わせたとき、誰かの投稿からこれが欠けていたと思います。 – John

+0

正規表現の区切り文字が欠落していたとはどういう意味ですか?それだけですか?または、アンカー/大文字と小文字を区別しない修飾子も必要ですか?ご確認ください。 –

答えて

2

'([a-z\d]){1,63}(\.)([a-z\d]){2,16}'

'/([a-z\d]){1,63}(\.)([a-z\d]){2,16}/i'

ほとんどのオンライン正規表現テスターでなければなりませんけれどもなど

なしサブドメイン、大文字は、すべてのオンライン正規表現テスターはあなたのためにここにこれを追加し動作するようには思えません。

+0

コメントですでに議論されていませんか? –

+0

@WiktorStribiżewはい、将来のユーザーのための回答として投稿する必要があります。あなたのコメントだったので、答えとして投稿すると私は私のものを削除します。 – Goose

+0

いいえ、それは最も確実に重複しているためです。 * **明らかな**問題で何度も何度も尋ねられた質問に答える必要はありません。 –