Регулярное выражение, чтобы избежать набора символов - PullRequest
0 голосов
/ 11 января 2012

Я использую Ruby on Rails 3.1.0 и хотел бы проверить атрибут класса, чтобы избежать сохранения в базе данных строки, содержащей следующие символы: (пробел), <, >, ", #, %, {, }, |, \, ^, ~, [, ] и `` `.

Что такое регулярное выражение?

Ответы [ 3 ]

3 голосов
/ 11 января 2012

Предполагается, что оно также должно быть не пустым:

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

Так как кто-то отрицает это, вот код теста:

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
2 голосов
/ 11 января 2012
bad_chars = %w(< > " # % { } | \ ^ ~ [ ] ')
re = Regexp.union(bad_chars)
p %q(hoh'oho) =~ re #=> 3

Regexp.union заботится о побеге.

2 голосов
/ 11 января 2012
a = "foobar"
b = "foo ` bar"

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

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

Обратное выражение:

/\A[^ \^<>"#%\{\}\|\\~\[\]\`]+\Z/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...