#javascript #regex
#javascript #регулярное выражение
Вопрос:
У меня есть некоторое регулярное выражение, которое проверяет, содержит ли строка не менее 6 символов. Хотя я также хочу, чтобы это было правдой, если есть только пустая строка.
Регулярное выражение:
let regexToTestName = /^[a-zA-Z0-9.!@#$%^amp;*()_-]{6,}$/g;
let usedName = ''; //or let usedName = 'atLeast6Char';
let isNameMatch = regexToTestName.test(usedName);
Как вы можете видеть, это будет работать для символов, указанных длиной не менее 6. Но как мне также получить истинное значение, если это пустая строка?
Ответ №1:
Просто сделайте вашу строку необязательной с помощью ?
:
/^(S{6,})?$/
var re = /^(S{6,})?$/
console.log('', re.test(''));
console.log('a', re.test('a'));
console.log('abcde', re.test('abcde'));
console.log('abcdefg', re.test('abcdefg'));
Ответ №2:
Следующее выражение будет соответствовать всей строке ^ $
для любого символа .
, если {0}
их есть (пустая строка), или |
оно будет соответствовать 6 или более {6,}
, указав диапазон только с индексом «from», запятой и без индекса «to». Выражение «или» должно быть заключено в группу ( )
.
var re = /^(.{0}|.{6,})$/;
console.log('', re.test(''));
console.log('1', re.test('1'));
console.log('12', re.test('12'));
console.log('123', re.test('123'));
console.log('1234', re.test('1234'));
console.log('12345', re.test('12345'));
console.log('123456', re.test('123456'));
console.log('1234567', re.test('1234567'));
console.log('12345678', re.test('12345678'));
Комментарии:
1. В процессе обновления.
Ответ №3:
Используйте канал |
и группировку для выполнения обоих.
^([/w]{6,0})|([w]{0,0})$