感谢您的帮助!
我希望使用 javascript 将字符串中的 url 转换为<a href="url">url</a>
。
我有以下正则表达式:
/https?://(www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,4}b([-a-zA-Z0-9@:%_+.~#?&//=]*)/gi
这似乎适用于任何以http://
、https://
、http://www.
或https://www.
开头的 URL。
但是,它不适用于仅以www
开头的网址:www.url.com
如何修改正则表达式以处理以下内容:
http://
https://
http://www.
https://www.
www.
再次感谢您的帮助!祝你有美好的一天!
您可以使用交替
(?:https?://(www.)?|www.)[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,4}b([-a-zA-Z0-9@:%_+.~#?&/=]*)
const regex = /(?:https?://(www.)?|www.)[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,4}b([-a-zA-Z0-9@:%_+.~#?&/=]*)/i;
const strs = ['http://example.com','https://example.com','http://www.example.com','https://www.example.com','www.example.com','example.com']
strs.forEach(str=>{
console.log(str, ' | ', regex.test(str))
})
Regex Demo
如果您希望example.com
也匹配,则可以(?:https?://)?
可选
(?:https?://)?(www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,4}b([-a-zA-Z0-9@:%_+.~#?&/=]*)