Мне нужен шаблон регулярного выражения, который будет соответствовать шаблону не менее 7 цифр до 40 и 0 или более из этих символов ()+-*# в любом порядке.
У меня это до сих пор: ^[(?=.*\d)(?=.*[+\-*()#\]*)]{7,40}$, но он не отвечает всем требованиям.
Некоторые тесты:
1234 // false needs 7 digits
1234563 // true 7 digits and 0 special chars
(66)666-666 // true 7 digits and 0 or more special [ ! d5]
(3)3-33 // false less than 7 digits
123456789009876543211234567890098765432112345 // false more than 40 digits
()-+*#34345789 // true 7 digits and 0 or more special chars
)(*&^%$£@7655432 // false 7 digits but special chars not in list
Любая помощь будет оценили.
Если вам нужно сопоставить ровно семь цифр с игнорируемыми различными символами, вы можете сделать это с помощью этого регулярного выражения:
^[()+\-*#]*(?:\d[()+\-*#]*){7}$
В течение 7-40 вы должны использовать {7,40} вместо {7}.
Это позволяет начинать текст с любого из специальных символов (или ни одного), а затем требует, по крайней мере, одной цифры, за которой следует любая из специальных автомобилей (или ничего) семь раз.
Пример:
function test(str, expect) {
var result = /^[()+\-*#]*(?:\d[()+\-*#]*){7,40}$/.test(str);
console.log(str, result, !result == !expect ? "OK" : "ERROR");
}
test("1234", false);
test("1234563", true);
test("(66)666-666", true);
test("(3)3-33", false);
test("123456789009876543211234567890098765432112345", false);
test("()-+*#34345789", true);
test(")(*&^%$£@7655432", false);