用于匹配 URL 的改进正则表达式
尝试从用户输入中检测和解析 URL 时,使用有效的正则表达式至关重要。在您的情况下,虽然您当前的表达式捕获了某些 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()@:%_\+.~#?&//=]*)
正则表达式剖析
这个修改后的正则表达式更少限制性的,将成功匹配 www.google.com 等 URL 以及具有明确协议的 URL(例如, 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."); }
以上是如何改进正则表达式以更有效地匹配 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!