首頁  >  文章  >  後端開發  >  為什麼我無法在沒有正規表示式的情況下驗證 PHP 中的網域?

為什麼我無法在沒有正規表示式的情況下驗證 PHP 中的網域?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 05:01:02252瀏覽

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

PHP網域驗證

問題:如何不使用正規表示式來驗證 PHP 中的網域名稱?

驗證要求:

  • 以字母或數字開頭
  • 可以包含字母、數字和連字
  • 以包含字母、數字和連字
  • 以字母或數字結尾
  • 長度在1 到253 個字元之間
每個標籤的長度在1 到63 個字元之間

可能的答案:

不使用正規表示式進行網域驗證是不可能的,因為需要檢查多個規則和限制。

正規表示式模式:
/^[a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i

意義:
  • ^ 和$ 錨定字串的開頭和結尾。
  • [a-zd] 符合字母或數字。
  • (-*[a-zd])* 符合零個或多個由連字號分隔的字母或數字。
  • . 符合一個句點。
{} 指定重複的次數。

範例程式碼:
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn