从字符串创建链接

时间:2011-06-07 00:53:29

标签: ruby-on-rails ruby ruby-on-rails-3 email url

我正在使用Ruby on Rails 3,我想从字符串第一个 URL 电子邮件地址中提取,然后使用结果字符串(示例:“http://www.test.com”,“mailto:test@test.com”,...)作为HTML {{1}中使用的href属性值}}

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

P.S。:I know the RoR auto_link method,但这并没有达到我的需要。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

好的,你可能不想要一个正则表达式,但是它有效,你可以将它用作帮助器

网址代码:

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

答案 2 :(得分:0)

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

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

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

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