我正在寻找一个正则表达式来验证我的用户选择的域名,I.E。 http://mysite.com/userdomain
。
我所关心的是它允许正确的角色。
答案 0 :(得分:5)
好吧,正则表达式会对你有所帮助,但你可能只想解析这个URL。
def validate_url(url)
uri = URI.parse(url)
uri.class != URI::HTTP
rescue URI::InvalidURIError
false
end
或者可以使用Addressable :: URI代替URI(由@ abe-voelker建议)
(来源:http://actsasblog.wordpress.com/2006/10/16/url-validation-in-rubyrails/)
答案 1 :(得分:1)
您可以使用Rubular来测试Regexps。
答案 2 :(得分:0)
只需转到Regex Lib并选择一个你喜欢的链接(该链接已指向搜索您正在寻找的正则表达式类型)。
答案 3 :(得分:0)
您是否试图弄清楚用户是否为您提供了一个有效作为网址文件夹的名称? (CGI.escape(some_folder_name) != some_folder_name
可能会让你到达你需要的地方。)
或者您正在寻找Regexp.new(Regexp.escape(some_url_string))
?
生成一个与some_url_string
的任何实例匹配的正则表达式。
像这样使用:
user.domain = "http://mysite.com/userdomain" # or "mysite.com/userdomain"
incoming_domain = "http://mysite.com/userdomain/a_post"
users_domain_regexp = Regexp.new(Regexp.escape(user.domain))
if incoming_domain =~ users_domain_regexp
puts "By George, we've done it!"
else
puts "I'm sorry, but we're prejudiced against that url"
end
#=> "By George, we've done it!"