c # Regex question: разрешены только буквы, цифры и точка (от 2 до 20 символов) - PullRequest
1 голос
/ 17 мая 2010

Я борюсь с моим регулярным выражением. Я хочу, чтобы в имени пользователя были разрешены только буквы и цифры, точка и длина от 2 до 20 символов. Я думал о чем-то вроде этого

[0-9a-Za-Z] {2,20}

но тогда 21 символ тоже хорошо, и это не то, что я хочу

Ответы [ 4 ]

9 голосов
/ 17 мая 2010

Я предлагаю вам сделать две проверки - одну на длину и одну на содержание, основываясь на том факте, что вам, вероятно, нужна только одна точка в имени, а не любое количество точек. Я предполагаю, что имена типа username и user.name являются единственными допустимыми форматами.

Это должно получить содержимое (но также допускает подчеркивание):

^\w+(\.\w+)?$

Если вам не нужны подчеркивания, вы должны использовать [0-9a-zA-Z]+ вместо \w+. Для объяснения он будет соответствовать любой строке, состоящей из одного или нескольких символов слова, за которыми следуют ровно 0 или 1 точки, за которой следуют один или несколько символов слова. Он также должен соответствовать началу и концу строки, т. Е. Никакие другие символы не допускаются в строке.

Тогда вам нужно получить длину только с помощью простой проверки длины.

6 голосов
/ 17 мая 2010

Попробуйте ^[\w\.]{2,20}$ вместо.

6 голосов
/ 17 мая 2010
^[0-9a-zA-Z\.]{2,20}$
2 голосов
/ 17 мая 2010

Вам нужно использовать начало и конец строки (^ и $) и экранировать .:

^[0-9a-zA-Z\.]{2,20}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...