我一直在寻找一个JS正则表达式,它将纯文本URL或主机名转换为可点击链接,但我找到的脚本都没有达到我的要求。不幸的是,我吮吸正则表达式并且无法修改表达式以按照我想要的方式工作。
我希望转换为链接的纯文本是:
[*] =可选。
非常感谢任何帮助!
答案 0 :(得分:1)
如果您可以忍受误报,例如something.notavalidtld
或999.999.999.999
匹配,那么您正在寻找的可能是这样的。 (否则,它会得到more messy。)
在字符串的开头开始匹配。
^(
匹配以http / https / ftp /...
开头的任何内容((https?|ftps?|mailto|file):.*?)
或匹配以下所有内容。
|
可选择匹配http / https / ftp / ...后跟:
和至少一个/
。
((https?|ftps?|mailto|file):/+)?
匹配IP地址......
(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
...或域名(带有可选的用户名/密码,也与电子邮件地址匹配)...
|([\w\d.:_%+-]+@)?([\w\d-]+\.)+[\w\d]{2,}
...或localhost
。
|localhost)
可选地后跟一个端口号。
(:\d+)?
可选地后跟任何路径/查询字符串。
(/.*)?
确保字符串在此处结束。
)$
所有上述部分应该连接在一起,两者之间没有任何空格。
我没有广泛测试过,所以我可能错过了一些东西。但至少你有一个起点。