【问题标题】:Make link unclickable with regex unless from the certain domain除非来自某个域,否则使用正则表达式使链接不可点击
【发布时间】:2011-12-04 04:10:52
【问题描述】:

我想编写一个使链接不可点击的正则表达式 - 只需删除 href html 标记并将链接 url 保留为文本。所以它会忽略锚文本,如果它只留下url。

但是,如果链接不是来自某个域,则此正则表达式应该使链接无法点击。我想要这个用于我的私人消息系统。

所以正则表达式会做以下事情

如果链接不是针对特定域的,请制作链接 url 文本。忽略给定的锚文本。

asp.net 4.0 , C# 4.0

例子

<a href="http://www.monstermmorpg.com/" target="_blank">My domain</a>

这将被解析为http://www.monstermmorpg.com/,它将是文本

【问题讨论】:

  • 与所有与正则表达式相关的查询一样,请发布示例数据以进行测试,以及预期的结果
  • 不要使用正则表达式解析 HTML。 Ever!

标签: c# asp.net regex hyperlink


【解决方案1】:

这样的东西适用于 jQuery:

$(document).ready(removeLink("domain.com"));

function removeLink(domain)
{
   $('a').each(function(){
       if($(this).attr("href")!=null)
       if($(this).attr("href").indexOf(domain)>=0)
           $(this).removeAttr("href");
})
}

解释:

获取 HTML 中的所有锚元素,遍历它们并删除所有包含 domain.com 的超链接的 href 属性。

jsfiddle demo.

【讨论】:

  • 实际上它会删除所有给定的链接。
  • 感谢您的评论。我解决了 htmlagilitypack 的问题 :) 但 jquery 也可以。
  • @MonsterMMORPG 我的“更新”显然有一个错误。 jsFiddle 有时它太慢了,以至于你认为它运行了你的脚本并且它工作了,但实际上它没有。我最初的示例肯定可以正常工作。我用几个超链接甚至同一域上的不同路径更新了链接,它工作正常。
猜你喜欢
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
相关资源
最近更新 更多