Есть строки:
128
129
129а
12А
12Вк1
12а
12к0стр0
Нужно получить где только цифры либо цифры и в конце одна буква.
С регулярными значениями не знаком, помогите пожалуйста.
Пробовал писать
if (preg_match("/^[(0-9){0,3}+(а-я{0,1})]+$/", $home["name"])).
Но это не так работает.
И пробовал /^\d+|\d+[а-я]?/ тогда все строки пропускает
/^\d+[а-яА-Я]?$/
^ - начало строки\d+ - одна или больше цифр[а-яА-Я]? - не более одной русской буквы$ - конец строкиhttps://regex101.com/r/LcSuLt/1
Пробовал писать if (preg_match("/^[(0-9){0,3}+(а-я{0,1})]+$/", $home["name"])) Но это не так работает
Во первых, если вам нужно найти более одного соответствия, то вместо preg_match() надо использовать preg_match_all() (глобальный поиск)
Во вторых, если искомые значения находятся на разных строках, а в качестве ограничителей вы используете ^ и $, то нужно в конец шаблона добавлять модификатор m
В третьих, внутри квадратных скобок символьного класса [...] действуют особые правила, одно из них говорит о том, что почти все метасимволы становятся литералами.
Один из вариантов решения выглядит так:
$str = '128 129 129а 12А 12Вк1 12а 12к0стр0';
preg_match_all('~\b\d+\pL?\b~iu', $str, $arr);
var_dump($arr);
В результате вы получите набор значений:
array (size=1)
0 =>
array (size=5)
0 => string '128' (length=3)
1 => string '129' (length=3)
2 => string '129а' (length=5)
3 => string '12А' (length=4)
4 => string '12а' (length=4)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости