我使用的是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从中创建链接。