我正在使用Ruby on Rails 3.1.0,我想验证一个类属性,以避免在数据库中存储包含这些字符的字符串:(空格),
<
,>
,"
,#
,%
,{
,}
,|
,\
,{ {1}},^
,~
,[
和```。
什么是正则表达式?
答案 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
负责逃避。