ホームページ > バックエンド開発 > PHPチュートリアル > 正規表現を使用しないと PHP でドメインを検証できないのはなぜですか?

正規表現を使用しないと PHP でドメインを検証できないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-31 05:01:02
オリジナル
310 人が閲覧しました

Why Can't I Validate Domains in PHP Without Regular Expressions?

PHP ドメイン名の検証

質問: 正規表現を使用せずに PHP でドメイン名を検証するにはどうすればよいですか?

検証要件:

  • 文字または数字で始まる
  • 文字、数字、ハイフンを含めることができます
  • で始まるwith 文字または数字で終わる
  • 長さは 1 ~ 253 文字
  • 各ラベルの長さは 1 ~ 63 文字

考えられる答え:

複数のルールと制限をチェックする必要があるため、正規表現を使用せずにドメイン名を検証することはできません。

正規表現パターン:

/^[a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i
ログイン後にコピー

意味:

  • ^ および $ アンカー文字列の先頭との終わり。
  • [a-zd] は文字または数字と一致します。
  • (-*[a-zd])* は、ハイフンで区切られた 0 個以上の文字または数字と一致します。
  • はピリオドと一致します。
  • {} は繰り返し回数を指定します。

サンプルコード:

<code class="php">function is_valid_domain_name($domain_name)
{
    return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) //valid chars check
            &amp;&amp; preg_match("/^.{1,253}$/", $domain_name) //overall length check
            &amp;&amp; preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name)   ); //length of each label
}</code>
ログイン後にコピー

テストケース:

域名 有效性
a Y
0 Y
a.b Y
localhost Y
google.com Y
news.google.co.uk Y
xn--fsqu00a.xn--0zwm56d Y
goo gle.com N
google..com N
google.com N
google-.com N
.google.com N
N
alert( N
. N
.. N
N
- N
[] N

以上が正規表現を使用しないと PHP でドメインを検証できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート