匹配帶或不帶協議和域前綴的URL
使用URL 時,通常需要匹配它們,無論它們是否包含HTTP/ HTTPS 協定或「www」網域前綴。以下是實現此目的的正規表示式的詳細分解:
<code class="php">$regex = "(https?|ftp)://)?"; // SCHEME (Optional) $regex .= "([a-z0-9+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)?"; // User and Pass (Optional) $regex .= "([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))"; // Host or IP address $regex .= "((:[0-9]{2,5})?)?"; // Port (Optional) $regex .= "(/([a-z0-9+$_%-]\.?)+)*/?"; // Path (Optional) $regex .= "(?=[a-z+&$_.-][a-z0-9;:@&%=+/$_.-]*)?"; // GET Query (Optional) $regex .= "(#[a-z_.-][a-z0-9+$%_.-]*)?"; // Anchor (Optional)</code>
說明:
要檢查此正規表示式,請使用下列語法:
<code class="php">preg_match("~^$regex$~i", $url, $m);</code>
這可確保整個 URL 與模式相符並包含任何可選部分。透過使用此正規表示式,您可以可靠地匹配各種格式的 URL。
以上是如何匹配帶有或不帶協定和網域前綴的 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!