проверка специальных символов - PullRequest
3 голосов
/ 28 мая 2010

Я хочу подтвердить логин специальными символами !@#S%^*()+_-?/<>:"';. пространство с использованием регулярного выражения в ruby ​​на рельсах. Эти специальные символы не должны быть приемлемыми. Какой код для этого?

Ответы [ 6 ]

7 голосов
/ 09 сентября 2010

validates_format_of :username, :with => /^[A-Za-z0-9.&]*\z/

будет работать

3 голосов
/ 28 мая 2010

Вы получили регулярные выражения в этой теме, которые отвечают на ваш конкретный вопрос. Вы используете черный список (блокируете символы, которые вам не нужны), но действительно ли это лучше? Я вижу, вы не закрывали & или ~, и есть много других специальных символов, которые, вероятно, все еще отсутствуют.

Если вы пытаетесь заблокировать специальные символы, я бы предложил подход с использованием белого списка, согласно предложению Паблора о регулярных выражениях. Он гораздо более широкий и содержит только то, что вы хотите разрешить .... не специальные символы: только слова, подчеркивание и цифры.

Я пошел вперед и создал для вас метод, который использует подход белого списка с использованием этого регулярного выражения.

def valid_login?(str)
    return true if (/^\w*$/.match(str))
    return false
end

Этот метод valid_login? Возвращает значение true только в том случае, если строка содержит буквы, цифры или подчеркивание, поэтому все ваши специальные символы (плюс любые другие, которые вы пропустили, не отвечающие этим требованиям), надежно обнаружены.

Использование:

> valid_login?("testy") 
  true
> valid_login?("a b")
  false
> valid_login?("a'")
  false
1 голос
/ 28 мая 2010

Регулярное выражение /^\w*$/ позволяет использовать только буквы, цифры и подчеркивание.

Кроме того, у вас есть чит-лист и живой редактор регулярных выражений ruby ​​на http://rubular.com

1 голос
/ 28 мая 2010

Ну, я не знаю рельсы, но это то, как регулярное выражение выглядело бы на любом другом языке, который я знаю:

^[^!@#\$%\^\*\(\)\+_\-\?/\<\>:"';\. ]$
0 голосов
/ 24 января 2018
validates_format_of :username, :with => /^[^!@#S%\^\*()\+_-\?\/<>:\"';]+$/
0 голосов
/ 28 мая 2010

Во-первых, я бы порекомендовал использовать гем для входа в систему, например authlogic .

Драгоценный камень можно настроить для проверки адреса электронной почты. Вы также получаете возможность не беспокоиться об аутентификации своих пользователей и т. Д.

Очень простой в работе самоцвет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...