имя пользователя регулярное выражение в рельсах - PullRequest
0 голосов
/ 14 ноября 2010

Я пытаюсь найти регулярное выражение, чтобы ограничить то, что человек может использовать для имени пользователя на моем сайте. Мне не нужно проверять, сколько символов в нем, как это делает другая проверка. По сути, все, что мне нужно сделать, это убедиться, что он позволяет: буквы (заглавные и строчные), тире и подчеркивание.

Я сталкивался с этим: / ^ [- a-z] + $ / i

Но, похоже, цифры не принимаются.

Чего мне не хватает?

Ответы [ 3 ]

5 голосов
/ 14 ноября 2010

Регулярное выражение, которое вы ищете:

/\A[a-z0-9\-_]+\z/i

Значение одного или нескольких символов диапазона az, диапазона 0-9, - (необходимо экранировать с помощью обратной косой черты) и _, без учета регистраквалификатор i)

4 голосов
/ 14 ноября 2010

Используйте

/\A[\w-]+\z$/

\w - сокращение от букв, цифр и подчеркивания.

\A соответствует началу строки, \z соответствует концу строки. Эти токены называются якорями , и Ruby немного отличается от них: большинство механизмов регулярных выражений по умолчанию используют ^ и $ в качестве якорей начала / конца строки, тогда как в Ruby также может совпадать в начале / конце строк (что важно, если вы работаете с многострочными строками). Поэтому безопаснее (как отметил @JustMichael) использовать \A и \z, потому что такой двусмысленности нет.

3 голосов
/ 14 ноября 2010

Ваше регулярное выражение содержит класс символов [-a-z], который допускает символы - (тире) и от a до z. Чтобы расширить диапазон символов, разрешенных этим классом символов, вам необходимо добавить больше символов в [].

См. Классы символов или Наборы символов для получения дополнительной информации и примеров.

...