Изисквания:
Редъксът трябва да съвпада с низ, който не съдържа символа "@", но съдържа най-малко два алфа-символа и общо между 2 и 50 символа.
Примери за издаване:
"Hi there!%%#"
" fd"
" 9 z 80212132 z"
Неуспешни примери:
"anything with @"
"a"
" 9 z 80212132 "
"This string does not contain at symbol and has two characters but is too long!"
Считам, че съм близо, но това няма да успее с никакви други знаци, освен [a-zA-Z] и не съм сигурен защо:
^((?![@])(?=[a-zA-Z]).){2,50}$
Отговори:
2 за отговор № 1Вашият regex не проверява за поне два алфа.
Можете да използвате следната регенерация:
^(?=(?:[^A-Za-z]*[A-Za-z]){2})[^@]{2,50}$
Вижте регекс демо
обяснение:
^
- стартиране на низ(?=(?:[^A-Za-z]*[A-Za-z]){2})
- трябва да има най-малко две поява на нула или повече не-алфа символи, последвани от една алфа[^@]{2,50}
- 2 до 50 знака, различни от@
$
- края на низа.
var re = /^(?=(?:[^A-Za-z]*[A-Za-z]){2})[^@]{2,50}$/;
var strs = ["Hi there!%%#", " fd" , " 9 z 80212132 z", "anything with @ a", " 9 z 80212132 ", "This string does not contain at symbol and has two characters but is too long!"];
// demo
for (var s of strs) {
document.body.innerHTML += "<i>" + s.replace(/ /g, " ") + "</i> test result: <b>" + re.test(s) + "</b><br/>";
}
0 за отговор № 2
Той гарантира:
- без знак е @
- Най-малко 2 алфа символа
- общо между 2 и 50
^(?!.*@)(?=(?:.*[a-zA-Z]){2}).{2,50}$