【问题标题】:Regex for finding all text urls but not in images src用于查找所有文本 url 但不在图像 src 中的正则表达式
【发布时间】:2013-05-14 03:03:12
【问题描述】:

我正在将页面上的所有文本网址替换为可点击的。
当我这样做时,它还会替换“src”属性中的链接 图片数量(这是不想要的)

我的正则表达式是这样的

[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?

我尝试使用

进行否定搜索
(?!src\=\")[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?

但它不匹配一个东西。

我应该如何在我的正则表达式之前?

【问题讨论】:

  • 是 javascript 你唯一的选择..你不能用其他服务器端语言做到这一点
  • @Anirudh 我按照你的建议做了-服务器端。
  • 问题是否已回答/关闭?
  • @winner_joiner 基本上我按照 Anirudh 的建议做了。如果您有 JS 的解决方案,您可以将其发布为答案。

标签: javascript regex regex-negation


【解决方案1】:

这样的事情怎么样...

(?:(href="))([-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)(?:([^>]*>[^<]*</a>))

我在开头和结尾添加了非捕获组,以验证它是锚href。我用这个页面的源代码在http://regexpal.com/进行了测试

【讨论】:

    【解决方案2】:

    我不确定这个问题,但我的解释是你想替换 A 元素中 href 属性的值。

    此正则表达式将查找具有 href 属性的 A 元素。该值将位于第一个捕获组中。

    (?:<a[^>]*?href\s*=\s*")([^"]*)(?:")
    

    这是一个捕获匹配的所有三个部分并使用替换功能的版本

    myHtml.replace(/(<a[^>]*?href\s*=\s*")([^"]*)(")/gi, function(match, $1, $2, $3) {
        return $1 + "javascript.void(functionName('" + $2 + "'))" + $3;
    });
    

    如果 myHtml 包含类似以下内容:

    <a target="new" title="test" href="http://url.com">
    

    它会被转换成这个:

    <a target="new" title="test" href="javascript.void(functionName('http://url.com'))">
    

    您还提到了可点击。

    myHtml.replace(/(<a[^>]*?)(href\s*=\s*"([^"]*)")/gi, function(match, $1, $2, $3) {
        return $1 + "onclick=\"functionName('" + $3 + "')\"";
    });
    

    结果:

    <a target="new" onclick="functionName('http://url.com')">
    

    顺便说一句,我使用自己的正则表达式工具对此进行了测试:http://rey.gimenez.biz

    【讨论】:

      猜你喜欢
      • 2023-01-01
      • 2014-01-30
      • 2012-05-10
      • 2015-11-08
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多