Регулярные выражения | Ограничить возможные имена пользователей - PullRequest
0 голосов
/ 07 мая 2020

Вопрос

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

1) Имена пользователей могут содержать только буквенно-цифровые символы c .

2) Единственные числа в имени пользователя должны быть в конце. В конце их может быть ноль или больше. Имя пользователя не может начинаться с цифры.

3) Буквы имени пользователя могут быть строчными и прописными.

4) Имя пользователя должно состоять не менее чем из двух символов. В двухсимвольном имени пользователя в качестве символов можно использовать только буквы алфавита.

Мой код

let username = "JackOfAllTrades";
let userCheck = /^(a-za-z|a-z(a-z+|\d\d+))(\d*)$/i; 
let result = userCheck.test(username);

Мой вопрос

Как я могу исправить этот код? Что такого в коде, который не работает?

Ответы [ 3 ]

1 голос
/ 07 августа 2020

Решение 1:

let username = "JackOfAllTrades";
let userCheck = /^[a-z]([0-9][0-9]+|[a-z]+\d*)$/i;
let result = userCheck.test(username);

Код Пояснение

  • ^ - начало ввода
  • [az] - первый символ буква
  • [0-9] [0-9] + - оканчивается двумя или более цифрами
  • | - или
  • [az] + - имеет одну или несколько букв рядом с
  • \ d * - и заканчивается нулем или более цифрами
  • $ - конец ввода
  • i - игнорировать регистр ввода

Решение 2:

let username = "JackOfAllTrades";
const userCheck = /^[a-z]([0-9]{2,}|[a-z]+\d*)$/i;
let result = userCheck.test(username);

Код Пояснение

  • ^ - начало ввода

  • [az] - первый символ - это буква

  • [0-9] {2,0} - заканчивается двумя или более цифрами

  • | - или

  • [az] + - имеет одну или несколько букв рядом с

  • \ d * - и оканчивается нулями или несколькими цифрами

  • $ - конец ввода

  • i - игнорировать регистр ввода

0 голосов
/ 08 августа 2020

Попробуйте это:

let userCheck = /^[a-z]([a-z]+|[a-z]*[\d][\d])$/i;
0 голосов
/ 07 мая 2020

Я предполагал, что вы используете sh только символы без диакритических знаков.

С регулярным выражением /^[a-z]{2,}\d*$/i вы получаете следующие совпадения / ошибки (при тестировании по одному):

• Paul46:  matches
• 4frank:  fails
• mike:    matches
• jus6tin: fails 
• p87:     fails
• k9:      fails
• AL10:    matches

С уважением

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