」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何改進正規表示式以更有效地匹配 URL?

如何改進正規表示式以更有效地匹配 URL?

發佈於2024-12-14
瀏覽:695

How Can I Improve My Regular Expression to Match URLs More Effectively?

用於匹配URL 的改進正則表達式

嘗試從用戶輸入中檢測和解析URL 時,使用有效的正則表達式至關重要。就您而言,雖然您目前的表達式捕獲了某些網址格式,但它無法考慮缺乏明確協議方案的網址,例如 www.google.com。

修訂的正則表達式

要解決此問題並確保全面的URL 匹配,請考慮使用以下修訂後的正則表達式:

^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

正規表示式剖析

  • 錨點:確保比賽開始並結束整個字串。
  • 協議(可選):捕獲可選的“http”或“https”協議方案。
  • Domain:匹配域名,包括子域和頂級域。
  • Port:擷取可選連接埠號碼(例如“:8080”)。
  • Path:捕獲域後的任何路徑資訊(例如,「/index.html」)。
  • Query:捕獲查詢字串參數(例如,“?name=John”)。
  • Fragment:擷取片段識別碼(例如“#footer”)。

這個修改後的正規表示式是限制較少,將成功匹配www.google.com 等網址以及具有顯式協議的網址(例如http://www.stackoverflow.com) 。

範例實作(JavaScript)

const regex = new RegExp(/(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)g);
const url = 'www.google.com';

if (url.match(regex)) {
  console.log("URL successfully matched.");
} else {
  console.log("URL did not match.");
}
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3