#ruby-on-rails #regex #ruby-on-rails-3
#ruby-на-рельсах #Регулярное выражение #ruby-on-rails-3
Вопрос:
Я пытаюсь создать регулярное выражение для правильной проверки имени пользователя в Ruby on Rails, но по какой-то причине я делаю что-то неправильное, когда все входные данные имени пользователя недопустимы. Я разрешаю использовать символы верхнего регистра, символы нижнего регистра, цифры и символы подчеркивания.
Код регулярного выражения проверки имени Ruby on Rails:
validates :name, :format => {:with => /A[A-Za-zd_]z/}
Что я делаю не так?
Спасибо
Комментарии:
1. Попробуйте использовать заглавную букву Z или попробуйте использовать ^ и $ вместо этого
Ответ №1:
validates :name, :format => {:with => /^[A-Za-z0-9_] $/}
Хорошая страница для тестирования регулярных выражений в ruby: http://rubular.com /
Комментарии:
1. Я не думаю, что пустая строка должна проверяться. А ты?
2. за исключением … для замены
Az
на^$
см.: guides.rubyonrails.org/security.html#regular-expressions
Ответ №2:
# A[A-Za-zd_]z
#
# Options: ^ and $ match at line breaks
#
# Assert position at the beginning of the string «A»
# Match a single character present in the list below «[A-Za-zd_]»
# A character in the range between “A” and “Z” «A-Z»
# A character in the range between “a” and “z” «a-z»
# A single digit 0..9 «d»
# The character “_” «_»
# Assert position at the very end of the string «z»
Это ваше выражение. Вы действительно хотите сопоставить один символ?
Я считаю, что :
/^w $/
это то, что вы ищете. w — это сокращенный символьный класс для того, что вы написали. Приведенное выше регулярное выражение будет соответствовать строке, состоящей только из A-Za-Z0-9_