Вы можете сделать это без создания сложного шаблона регулярных выражений. Создайте два небольших шаблона, чтобы удалить символы, которые вы не хотите проверять. Например, фрагмент содержит регулярное выражение [^a-z]+
, чтобы соответствовать всем символам не в нижнем регистре-альфа. Затем мы используем этот шаблон для удаления этих символов из строки, а затем можем подсчитать количество оставшихся символов. Это говорит нам о том, что aabbccd1bbb3bb
имеет 12 буквенных символов. То же самое можно создать для цифр \D+
. Затем вы можете добавить свою логику проверки ниже, чтобы убедиться, что она удовлетворяет другим ограничениям (например, 1 <= количество цифр <= 22 и т. Д.). </p>
Это гораздо проще понять, чем сложное регулярное выражение, и гораздо прощеизменить.
strings = [
"aabbccd1bbb3bb",
"vvvddhh3",
"12kkk",
"abcdefghijklmnopqrstuvwx12345678901234567890123", // too many digits
"abcdefghijklmnopqrstuvwxy1234567890123456789012", // too many alpha
"abcdefghijklmnopqrstuvwx1234567890123456789012" // just right
]
r1 = /[^a-z]+/g
r2 = /\D+/g
for (s of strings) {
a = d = s
n_alpha = a.replace(r1,'').length
n_digit = d.replace(r2,'').length
console.log(`alpha: ${n_alpha}; digit: ${n_digit}`)
// add your logic here
// e.g.
// if (n_alpha >= 1 && n_alpha <= 24) ...
}
Кроме того, чтобы проверить, заканчивается ли строка цифрой, просто сравните ее с \d$
.