Подтверждение формы разрешить только 6 или 9 номеров? - PullRequest
0 голосов
/ 04 марта 2020

У меня есть форма с полем, которое принимает цифры только для кода доступа. Коды доступа состоят из 6 или 9 цифр. В настоящее время я проверяю поле с

elseif (( ! is_numeric($values['access'])) || ! preg_match('/[0-9]{6,9}$/', $values['access']))

, что позволяет использовать от 6 до 9 чисел. Как я могу разрешить только 6 или 9 чисел?

Я думаю, это что-то вроде

elseif (( ! is_numeric($values['access'])) || ! preg_match('/[0-9]{6}[0-9]{9}$/', $values['access']))

Но мы все знаем, что это не сработает. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

(a|b) будет соответствовать либо a, либо b. Итак!

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

Будет соответствовать либо 6 цифрам, либо 9 цифрам.

Что вы можете проверить здесь https://regex101.com/r/Chx10H/1/

1 голос
/ 07 марта 2020

Более эффективный способ, он занимает 27 шагов (принят ответ 36 шагов):

  ^\d{6}(?:\d{3})?$

Демонстрация и объяснение

...