【问题标题】:Regex to stop detect link when reach an  正则表达式在到达时停止检测链接
【发布时间】:2013-11-08 07:08:28
【问题描述】:

我试图找到一个正则表达式来检测字符串中的任何链接。

当前使用:/(https?:\/\/[^\s]+)/g

在我看到这种链接之前,这很好用:

http://campus.inkrement.no/Show/Index/2757798 for å lære mer

我希望它在第一个 结束

原来是这样:

<a href='http://campus.inkrement.no/Show/Index/2757798'>http://campus.inkrement.no/Show/Index/2757798</a>&nbsp;for&nbsp;å&nbsp;lære&nbsp;mer

而不是这样:

<a href='http://campus.inkrement.no/Show/Index/2757798&nbsp;for&nbsp;å&nbsp;lære&nbsp;mer'>http://campus.inkrement.no/Show/Index/2757798&nbsp;for&nbsp;å&nbsp;lære&nbsp;mer</a>

有人知道吗?

【问题讨论】:

  • 您可以尝试在第一场比赛之后运行第二个正则表达式,以削减包括第一个   之后的所有内容

标签: javascript regex regex-lookarounds


【解决方案1】:

我认为你应该在这里使用负前瞻

类似:

/(https?:\/\/(?:(?!&nbsp;)[\S])+)/g

[\S] 将匹配任何非空格

(?!&amp;nbsp;) 仅当前面没有 &amp;nbsp; 时

?: 将阻止捕获该组(可选)

【讨论】:

  • 像魅力一样工作,谢谢! :D
【解决方案2】:

你可以在你的表达式中添加几个字符来得到这个:

/(https?:\/\/[^\s]+?)(?=&amp;nbsp;)|(https?:\/\/[^\s]+)/g

示例:

http://campus.inkrement.no/Show/Index/2757798&amp;nbsp;for&amp;nbsp;å&amp;nbsp;lære&amp;nbsp;mer

输出:

http://campus.inkrement.no/Show/Index/2757798

【讨论】:

  • @Adassko 是的,你是对的,我刚刚检查过。所以你现在是我最好的选择。再次感谢:)
  • @Adassko 你是对的,编辑它最简单的方法......现在它可以工作了,无论如何谢谢。 :) 有没有办法将? 与lookahead 一起使用?
【解决方案3】:

/(https?:\/\/[^\s]+?)&amp;nbsp;/g 不会成功吗?请注意,您也匹配第一个 &amp;nbsp;,因此您需要将其添加到替换字符串中。 &amp;nbsp; 总是有结束的吗?

【讨论】:

  • 谢谢,但它没有帮助:(当它到达最后一个' '时它会停止,但我希望它停止在第一个'nbsp;'
  • 请注意+后面的?,使其不情愿(它会尽可能少匹配)。你试过了吗?
  • @SQB 你仍然会在结果中添加&amp;nbsp,他不想要它。
  • 是的,所以我注意到它需要添加到替换字符串中。一般来说,人们似乎忘记了,如果你正在替换,你可以尽可能多地匹配周围的字符串,只要你用它自己替换它。通常,您不需要(昂贵的)环顾四周。
猜你喜欢
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
相关资源
最近更新 更多