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

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

Mary-Kate Olsen
發布: 2024-10-31 05:01:02
原創
265 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板