我正在使用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,但这并没有达到我的需要。
答案 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从中创建链接。