通过解析包含url的文本生成HTML锚
Generate HTML anchor by parsing text containing URLs
我有一个包含运行文本的段落,其中也可能包含url。该段落将包含描述对象或事物的运行文本,并在两者之间穿插url。url的形式可以是
- http://mail.google.com
- http://www.google.com
- www.google.com
我需要使用JavaScript解析段落并生成HTML内容,确保url呈现为HTML锚。我可以使用以下-
var httpUrlPattern = /https?:'/'/['w-]+('.['w-]+)+(['w.,@?^=%&:'/'$~+#-]*['w@?^=%&'/~+#-])?
text = text.replace( httpUrlPattern, '<a href="$&" target="_blank">$&</a>' );
对于类型#1和#2的url可以正常工作。但是对于#3,它生成href=/www.google.com
所以我应用了额外的过滤
var wwwUrlPattern = /(www'.)['w-]+('.['w-]+)+(['w.,@?^=%&:'/'$~+#-]*['w@?^=%&'/~+#-])?;
text = text.replace( wwwUrlPattern, '<a href="http://$&" target="_blank">$&</a>' );
这修复了#3),但破坏了#2)。
有什么建议我如何修复所有的场景吗?
缺乏构建URL的标准,这使得它很难实现。我假设您不想捕获没有www
或mail
前缀的url,如stackoverflow.com
。这使得匹配非常不确定。它可以是这样的:
/'b['w.,@?^=%&:/$~+#-]+'.'w'w+'b/
但是有很大的错误匹配的风险
为了使其更具体,您可以使http
或 www
/mail
部分(或/和任何其他给定的前缀集)是强制性的:
/'b((?:https?:'/'/|www'.|mail'.)['w.,@?^=%&:/$~+#-]+)'.'w'w+'b/
希望对你有帮助。
问候。
嵌套组
var wwwUrlPattern = /(http:'/'/)?((www'.)['w-]+('.['w-]+)+(['w.,@?^=%&:'/'$~+#-]*['w@?^=%&'/~+#-]))?/;
text = text.replace( wwwUrlPattern, '<a href="http://$2" target="_blank">$&</a>' );
相关文章:
- 我收到消息“资源解释为脚本,但使用 MIME 类型文本/html 传输”
- 如何使按钮单击并更改以前显示的文本(html)
- 使用 Javascript 解析电子邮件源的文本/html 部分
- Javascript/jQuery,将CSS应用于包含特定文本/html的元素
- jQuery文本html操作,以查找大量文本中出现的字符,然后更改其颜色
- 使用 Jquery 创建具有转义文本 + HTML 的元素
- 在空节点(如文本节点)中添加文本/html
- 从网站获取特定文本 (html)
- 如何解决“资源解释为脚本但使用 MIME 类型文本/html 传输”
- 请求 JSONP 时的文本/html 输出
- 将元素添加到 DOM 给定的纯文本 HTML 中,仅使用纯 JavaScript(没有 jQuery)
- 在gmail撰写邮件区域中获取选中/突出显示的文本html
- 如何确定是否在父元素的开始或结束存在文本?HTML DOM &JavaScript
- 在输入文本html中显示格式
- 如何使纯文本html javascript
- 资源解释为脚本,但传输MIME类型文本/html javascript
- 从Javascript传递文本- HTML- PHP
- 从DOM对象中获取文本/html
- 脚本类型=“文本/ html"从文件中包含HTML
- jsFiddler.NET中的文本/HTML编辑器