Javascript 要添加目标的正则表达式=";“空白”;连接到所有外部链接

Javascript 要添加目标的正则表达式=";“空白”;连接到所有外部链接,javascript,jquery,regex,dom,Javascript,Jquery,Regex,Dom,是否可以只使用一个正则表达式向所有标记添加target=“\u blank”?我一直在尝试正面和负面的表情,但都没有效果。这应: 匹配其href以http:// 如果锚定标记没有target标记,则添加target=“\u blank”标记 如果它确实有一个目标标记,它会检查目标标记是否已经设置为“\u blank”,如果没有设置,它会被替换为目标=“\u blank” 这可能吗?如果不是,那么什么是计算强度最低的方法呢?您没有真正指定这是否是来自DOM的html(以及其他内容)。假设您要修

是否可以只使用一个正则表达式向所有
标记添加
target=“\u blank”
?我一直在尝试正面和负面的表情,但都没有效果。这应:

  • 匹配其
    href
    http://
  • 如果锚定标记没有
    target
    标记,则添加
    target=“\u blank”
    标记
  • 如果它确实有一个
    目标
    标记,它会检查
    目标
    标记是否已经设置为
    “\u blank”
    ,如果没有设置,它会被替换为
    目标=“\u blank”

这可能吗?如果不是,那么什么是计算强度最低的方法呢?

您没有真正指定这是否是来自DOM的html(以及其他内容)。假设您要修改DOM。。。使用jQuery,您可以执行以下操作:

$(document).ready( function() {
    $('a').filter( function() {
        return $(this).attr('href').substr(0, 7) == "http://";
    }).attr('target', '_blank');
});

下面是一个JSFIDLE,它显示了它的工作原理(您可以检查元素,看看
a
href
http://
开头,有
target=“\u blank”
):

如果HTML也是格式良好的XML,那么最好使用支持xpath和xslt的XML工具。看看哪一个提供了与grep、sed等类似的工具来处理XML。我想这会满足你的要求,但我没有尝试过:

xml ed -P -S -i //a -t attr -n target -v _blank somefile.html >somefile_2.html
xmled
调用XMLStarlet编辑命令

-p
保留格式

-S
保留空白

-i//a
在每个标记处插入

-t attr
插入类型为属性

-n目标
要插入的属性名称

-v\u blank
要插入的属性值


要进行更复杂的编辑,可以将XMLStarlet与xslt转换一起使用。

另一个选项是将
target=“\u blank”
添加到
中。这将全局影响页面


您是想通过嵌入html页面中的脚本(如Javascript)来实现这一点,还是在对html文件运行程序?您想要一个正则表达式来进行设置?它们不是用来将字符串与模式匹配的吗?请记住,在HTML中,标记属性没有严格的顺序。所以
都是有效的。@DioF:你不会从评论投票中获得代表,所以链接它只是一件有趣的事(并且是对OP的一个警告,不要只使用regex)。它最初是用于服务器端的,是来自CMS的HTML。然而,这将被输出到一个页面,实际上我喜欢您通过JavaScript将计算推送到客户端的想法。