/ / JavaScript Regex - Съвпадение на низ с който съдържа някои знаци и не съдържа други - javascript, regex, validation, pattern-matching

JavaScript Regex - Съвпадение на низ с това съдържа някои символи и не съдържа други - javascript, regex, валидация, съвпадение на шаблони

Изисквания:

Редъксът трябва да съвпада с низ, който не съдържа символа "@", но съдържа най-малко два алфа-символа и общо между 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, "&nbsp;") + "</i> test result: <b>" +  re.test(s) + "</b><br/>";
}


0 за отговор № 2

Той гарантира:

  • без знак е @
  • Най-малко 2 алфа символа
  • общо между 2 и 50

^(?!.*@)(?=(?:.*[a-zA-Z]){2}).{2,50}$

ДЕМОНСТРАЦИЯ