正则表达式以避免一组字符

时间:2012-01-11 11:45:16

标签: ruby-on-rails ruby regex string validation

我正在使用Ruby on Rails 3.1.0,我想验证一个类属性,以避免在数据库中存储包含这些字符的字符串:(空格),<>"#%{}|\,{ {1}},^~[和```。

什么是正则表达式?

3 个答案:

答案 0 :(得分:3)

假设它也应该是非空的:

^[^\] ><"#%{}|\\^~\[`]+$

由于某人正在低估这一点,这里有一些测试代码:

ary = [' ', '<', '>', '"', '#', '%', '{', '}', '|', '\\', '^', '~', '[', ']', '`', 'a']
ary.each do |i|
  puts i =~ /^[^\] ><"#%{}|\\^~\[`]+$/
end

输出:

nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
0

答案 1 :(得分:2)

a = "foobar"
b = "foo ` bar"

re = /[ \^<>"#%\{\}\|\\~\[\]\`]/

a =~ re # => nil
b =~ re # => 3

反表达式是:

/\A[^ \^<>"#%\{\}\|\\~\[\]\`]+\Z/

答案 2 :(得分:2)

bad_chars = %w(< > " # % { } | \ ^ ~ [ ] ')
re = Regexp.union(bad_chars)
p %q(hoh'oho) =~ re #=> 3

Regexp.union负责逃避。