【问题标题】:detect *any* link in string with regex?使用正则表达式检测字符串中的 *any* 链接?
【发布时间】:2013-10-11 17:34:44
【问题描述】:

这种情况还没有问题。 我不想检测字符串是否包含任何链接,即 http、ftp、https 和 www. 等的所有组合

基本上我想阻止一个字符串包含 any 链接。

我目前使用:

name.split(/\s+/).find_all { |u| u =~ /^https?:/ }).count

防止字符串中的任何链接的最佳方法是什么?

【问题讨论】:

  • 您是在谈论 HTML 链接(一个标签)还是只是一个 URL 字符串?
  • 通过分割空格,然后搜索,你没有利用正则表达式的力量。这更好:fail if name =~ /\bhttps?:/,尽管这不会捕获所有链接案例。我知道您的要求是什么——“www.example.com”算不算? “example.com”怎么样?如果是这样,那就没有希望了,因为那里有太多的域,维护将是一场噩梦
  • 可以使用正则表达式来做到这一点,但如果您的目标是阻止用户显示此类链接,他们将总是找到一种方法来规避那。喜欢: h t t p : // s t a c k o v e r f l o w 。 c o m
  • 另外,stackoverflow.com/questions/700163/… 的可能副本
  • @m_x 是的,我的目标是防止用户提交内容中的任何链接。我能做到的最好的

标签: ruby-on-rails regex string url detect


【解决方案1】:

我最终使用了:

errors.add(:name, "Your name cannot contain links") if name.match /\b(?:(?:mailto:\S+|(?:https?|ftp|file):\/\/)?(?:\w+\.)+[a-z]{2,6})\b/

这在几乎所有情况下都非常有效。 从多个在线来源共同破解

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多