Надо отфильтровать на серваке паспортные данные - т.к. в таблицу они вбиты некорректно то проверку приходится делать только на цифры и пробел - делаю вот так Код (PHP): $pattern = '/[0-9 ]/'; if (preg_match($pattern, $_POST['ser']." ".$_POST['nomer'])) { die("пропустил"); } else die("не пропустил"); в результате пропускается всеее и текст тоже, а самое интересное - что на онлайн тесте - регулярка срабатывает правильно в чем блин тут подвох ? Добавлено спустя 16 минут 33 секунды: убейте меня .. вот так нормально работает $pattern = '/([0-9]{2} [0-9]{2})\s[0-9]{6}/';
Не силен, но: /[0-9 ]/ - ты задаешь поиск чисел, они находятся ) '/([0-9]{2} [0-9]{2})\s[0-9]{6}/' - тут четкий паттерн 00 00 000000, что и дает правильный результат. Кстати, \s тут зачем?
/^[0-9 ]+$/ вот так тоже будет работать, т.е. от начала до конца строки только цифры и пробел. Но твой последний вариант имхо все же правильнее для паспорта. пробел это пробел, а \s - это ещё и таб и перевод строки.
уговорил.. поменял на пробел =) Добавлено спустя 29 секунд: теперь оно выглядит вот так /([0-9]{2} [0-9]{2}) [0-9]{6}/
поиграй: Код (PHP): if (preg_match("/[^0-9\s]/i", "78568 fdhg") == FALSE) { echo ":)"; } else { echo ":("; } 25224353 435345dgdsf (пробел)4353454 █536546█
правильный паттерн Код (Text): /^[\d\s]+$/ означает, что от начала до конца строки - только цифры и/или пробелы.