您当前的代码无法匹配缺少“http://”前缀的裸 URL。为了解决这个问题,请考虑采用全面的正则表达式:
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
此增强型表达式包括以下功能:
对于那些在匹配中不需要 HTTP 协议的用户,可以使用替代表达式:
[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
要演示这些表达式的功能,请查看在线测试工具: http://regexr.com?37i6s(对于第一个表达式)或 http://regexr.com/3e6m0(对于限制较少的表达式)。
这是一个使用更全面的正则表达式的 JavaScript 实现示例:
const expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi; const regex = new RegExp(expression); const t = 'www.google.com'; if (t.match(regex)) { alert("Successful match"); } else { alert("No match"); }
以上是如何使用正则表达式检测 URL(包括裸 URL)?的详细内容。更多信息请关注PHP中文网其他相关文章!