12
Сен
2021

PHP, Регулярные выражения: достать все попадающие под условия подстроки

Есть строка, которая содержит группу номеров. Количество групп заранее неизвестно, но не менее одной. Известно, что номера вводятся строго через пробел и каждый номер состоит строго из 4 цифр. Необходимо составить такое регулярное выражение, которое бы доставало все номера из строки. При этом в случае когда один из номеров не соответствует формату, регулярка отрабатывать не должна.

Пример 1:

строка: 1111 2222 3333 4444 5555 6666

ожидаемый результат: ["1111", "2222", "3333", "4444", "5555", "6666"]

Пример 2:

строка: 1111 222 3333

ожидаемый результат: []

Я пытался делать через preg_match_all() с таким выражением: /\A(\d\d\d\d\s?)+\z/. Оно отрабатывает на всю строку, но достает только последний номер. То есть из первого примера я получаю только 4444. В чем моя ошибка?

Источник: https://ru.stackoverflow.com/questions/1327799/php-%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D1%8C-%D0%B2%D1%81%D0%B5-%D0%BF%D0%BE%D0%BF%D0%B0%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B5-%D0%BF%D0%BE%D0%B4-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8F-%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8

12
Сен
2021

PHP, Регулярные выражения: достать все попадающие под условия подстроки

Есть строка, которая содержит группу номеров. Количество групп заранее неизвестно, но не менее одной. Известно, что номера вводятся строго через пробел и каждый номер состоит строго из 4 цифр. Необходимо составить такое регулярное выражение, которое бы доставало все номера из строки. При этом в случае когда один из номеров не соответствует формату, регулярка отрабатывать не должна.

Пример 1:

строка: 1111 2222 3333 4444 5555 6666

ожидаемый результат: ["1111", "2222", "3333", "4444", "5555", "6666"]

Пример 2:

строка: 1111 222 3333

ожидаемый результат: []

Я пытался делать через preg_match_all() с таким выражением: /\A(\d\d\d\d\s?)+\z/. Оно отрабатывает на всю строку, но достает только последний номер. То есть из первого примера я получаю только 4444. В чем моя ошибка?

Источник: https://ru.stackoverflow.com/questions/1327799/php-%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D1%8C-%D0%B2%D1%81%D0%B5-%D0%BF%D0%BE%D0%BF%D0%B0%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B5-%D0%BF%D0%BE%D0%B4-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8F-%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8

Тебе может это понравится...

Добавить комментарий