Подтвердить что ты не робот

Regex для сопоставления определенного количества цифр

Следующее regex будет соответствовать диапазону 9-11 цифр: /\d{9,11}/

Каков наилучший способ написать регулярное выражение, соответствующее точно 9 или 11 цифрам (исключая 10)?

Используя атрибут pattern входного элемента, регулярное выражение должно соответствовать всему значению поля ввода. Я хочу принять любое число, содержащее 9 или 11 цифр.

4b9b3361

Ответ 1

Хорошо, вы могли бы попробовать что-то вроде:

^\d{9}(\d{2})?$

Это соответствует ровно девяти цифрам, за которыми следуют дополнительные двухзначные цифры (например, 9 или 11 цифр).

В качестве альтернативы,

^(\d{9}|\d{11})$

может работать.

Но помните, что не все обязательно должно выполняться с помощью регулярных выражений. Также легко проверить соответствие строк ^\d*$ и что сама длина строки равна 9 или 11 (например, с помощью strlen).

Ответ 2

Это регулярное выражение будет делать

^(\d{9}|\d{11})$

или если вы не хотите точно соответствовать ему

\D(\d{9}|\d{11})\D

Ответ 3

/[^\d](\d{9}|\d{11})[^\d]/

В зависимости от того, какой инструмент вы используете, вам может потребоваться избежать символов (, | и).

Обратите внимание, что для того, чтобы не совпадать с 8 или любым другим числом, отличным от 9 или 11, регулярное выражение должно быть ограничено чем-то, чтобы указать, что совпадение окружено несимметричными символами. В идеале это был бы какой-то тип слова-границы, но синтаксис для этого был бы различным в зависимости от инструмента.

/\b(\d{9}|\d{11})\b/

работает с некоторыми инструментами. С чем вы работаете?