我想验证表单输入,以便不允许http://和www。哪种REGEX可以使用?
例如:
允许
google.com
不允许
MODEL
VALID_DOMAIN_REGEX = ???
验证:域名,格式:{with:VALID_DOMAIN_REGEX}
答案 0 :(得分:0)
这应该适合你:
/^[http\:\/\/|www].*/
例如:
1.9.2p320 :007 > "http://www.google.de".match /^[http\:\/\/|www].*/
=> #<MatchData "http://www.google.de">
1.9.2p320 :008 > "www.google.de".match /^[http\:\/\/|www].*/
=> #<MatchData "www.google.de">
1.9.2p320 :009 > "google.de".match /^[http\:\/\/|www].*/
=> nil
如果它对你的目的有效,那么它会匹配...
答案 1 :(得分:0)
由于http://
包含这么多正斜杠,因此这对Ruby的%r {}正则表达式文字语法很有用。
def has_forbidden_prefix?(string)
string =~ %r{^(http://|www)}
end
如果字符串不以http://
或www
开头,则返回nil,falsy。
如果字符串那么它将返回0,truthy(第一个匹配的偏移量)。
您可以使用validate :some_method_name
在模型中调用自定义验证方法,我会按如下方式对其进行构造
model MyThing
validate :no_forbidden_prefix
private
def has_forbidden_prefix?(string)
string =~ %r{^(http://|www)}
end
def no_forbidden_prefix
if has_forbidden_prefix?(uri)
errors.add :domain, 'The URI cannot start with "http://" or "www"'
end
end
end