Как сделать валидатор идентификатора пользователя с помощью регулярных выражений с условием, что у него только invig sh alpabet, number.etc - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу сделать проверку паролем регулярного выражения.
Пароль может содержать только engli sh alpahbet [az] [AZ], число [0-9] и некоторые специфические c символы, такие как -, _.
Я попытался сделать условие регулярного выражения, как показано ниже. Но это не идеально для моего случая.

const password = "123" // true
const password = "abcd123" // false

const result = /^[0-9]*$/.test(password);

Я хочу сделать это условие.

const password = 'abcd1234' // true
const password = 'A!~' // false
const password = '123456' // true
const password = 'abcd_123' // true
const password = 'abcd-123' // true

Как я могу сделать это для регулярного выражения? Не могли бы вы дать мне совет? Большое спасибо за чтение.

Ответы [ 5 ]

1 голос
/ 22 апреля 2020

Самое простое, вероятно:

valid = password => !/[^\w.,-]/.test(password)
valid('123') // true
valid('123#') // false

Обратите внимание, что . и - не экранируются внутри класса символов (- идет в конце) и \w === [a-zA-Z0-9_]

1 голос
/ 22 апреля 2020

На самом деле вы были очень близки в своей текущей реализации. На самом деле, что он делает, так это проверяет, состоит ли строка только из чисел. Простое добавление допустимых символов в эти квадратные скобки было бы легко исправить. Фактически его регулярное выражение должно решить вашу проблему, но не стесняйтесь расширять его:

const result = /^[\da-zA-Z-,_]*$/.test(password);
0 голосов
/ 22 апреля 2020
^[a-zA-Z0-9\-,\._]{1,9}$

# a-z, A-Z, 0-9 range
# - _,. characters
# min length = 1, max length = 9
0 голосов
/ 22 апреля 2020

Вот регулярное выражение, которое вы хотите.

/^[a-zA-Z0-9-_,.]+$/

const tests = ['abcd1234', 'A!~', '123456', 'abcd_123', 'abcd-123'];
tests.forEach(testCase => console.log(testCase, /^[a-zA-Z0-9-_,.]+$/.test(testCase)));
0 голосов
/ 22 апреля 2020

Просто включите все диапазоны на []

testPassword = password => /^[a-zA-Z0-9_-]*$/.test(password);

test = password => console.log(`Testing ${password}: ${testPassword(password)}`);

test('abcd1234');
test('A!~');
test('123456');
test('abcd_123');
test('ABcd-123');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...