Regex соответствует шаблону не менее 7 цифр и любому количеству специальных символов в любом порядке

Мне нужен шаблон регулярного выражения, который будет соответствовать шаблону не менее 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

Любая помощь будет оценили.

1
задан 13 August 2018 в 14:11

1 ответ

Если вам нужно сопоставить ровно семь цифр с игнорируемыми различными символами, вы можете сделать это с помощью этого регулярного выражения:

^[()+\-*#]*(?:\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);

2
ответ дан 15 August 2018 в 17:03

Другие вопросы по тегам:

Похожие вопросы: