用于域验证的Ruby正则表达式

时间:2011-06-02 21:28:26

标签: ruby regex validation

我正在寻找一个正则表达式来验证我的用户选择的域名,I.E。 http://mysite.com/userdomain

我所关心的是它允许正确的角色。

4 个答案:

答案 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!"