Не получается составить регулярное выражение такого вида xx.xx.xxx, где x - может быть любой латинский или русский символ любого регистра или цифра. Но обязательно должно быть 2 символа, далее точка => 2 символа => точка => 3 символа Составил следующее выражение -
var_dump(preg_match('/^([а-я]*[А-Я]*[A-Z]*[a-z]*ё*Ё*[0-9]*){2}.([а-я]*[А-Я]*[A-Z]*[a-z]*ё*Ё*[0-9]*){2}.([а-я]*[А-Я]*[A-Z]*[a-z]*ё*Ё*[0-9]*){3}$/u', 'd1.df.dfd'));
Выражение работает кооректно, но если удалить 1 символ вконце, например d1.df.df, то оно возвращает 1, хотя должно 0. Подскажите пожалуйста в чем может быть проблема?
Поиск двух групп: (?:[\pL\d]{2}\.){2}
Поиск трёх буквенно-числовых символов: [\pL\d]{3}
Модификаторы: i - регистронезависимый; u - поиск символов юникода.
(?:...) - это конструкция НЕ сохраняющих скобок, которая используется только для группировки символов. А простые скобки (...) помимо группировки ещё и выполняют захват соответствующих подстрок. \pL и \d - это буквенные и числовые символьные классы соответственно.
$str = 'xx.xx.xxx';
$patt = '~(?:[\pL\d]{2}\.){2}[\pL\d]{3}~iu';
preg_match($patt, $str, $arr);
var_dump($arr);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости