铁轨上的红宝石——用绳子做一个链接



我使用的是Ruby on Rails 3,我想从字符串中提取第一个URL电子邮件地址,然后使用结果字符串(例如:"http://www.test.com"、"mailto:test@test.com"…)作为HTML <a href="resulting_string_value">Test link name</a>中使用的href属性值。

我怎样才能以最安全的方式做到这一点

附言:我知道RoR-auto_link方法,但它不能满足我的需要。

域名和主机名中可以包含-.字符,电子邮件用户名具有特定于系统的定义。这里有一个hURL匹配器,它试图共享DNS解析。

/((https*://)|(mailto:[^@]+@))(/*[w-rb.]+)*/

好吧,您可能不想要正则表达式,但它可以工作,您可以将它用作辅助

url的代码:

str = "http://someurl.com/"
str.scan(/http://([^/]*)/)

电子邮件代码:

str = "mailto:someemail@email.com"
str.scan(/mailto:([^ ]*)/)

综合起来:

result_array = str.scan(/mailto:([^ ]*)|http://([^/]*)/)
if result_array.length > 0
  result = result[0][0] unless empty? result[0][0] 
  result = result[0][1] unless empty? result[0][1] 
end

如果你只想要字符串中的第一个链接,你可以使用match。此外,您希望使用非贪婪匹配:

str.match(/mailto:([^ ]*?( |$|n))|http://([^/]*?)( |$|n)/) 

如果你愿意,你可以添加更多的有效电子邮件地址检查等。

获得字符串后,可以使用auto_link从中创建链接。

相关内容

  • 没有找到相关文章

最新更新