Помогите составить регулярное выражение.

Омск

Новичок
Помогите составить регулярное выражение.

Мне нужно чтобы preg_match выдавал true для следующих строк:

9081231212
89081231212
8 908 123 12 12
8-908-123-12-12
8(908) 123 12 12
+7 908 123 12 12
8 9 0 8 1 2 3 1 2 1 2
+7 9 0 8 1 2 3 1 2 1 2
7 9 0 8 1 2 3 1 2 1 2
8-9-0-8-1-2-3-1-2-1-2
и так далее.
 

Grezz

Новичок
А может сперва очистить от мусора а потом уже preg_match? не? надо всё и сразу, да к тому же одной функцией?

зы preg_match true вообще не возвращает
 

Омск

Новичок
Спасибо за помощь, очистить от мусора не получитсья.

Попробую начать сам, а Вы если что поправите :)

-~{}~ 09.04.09 17:48:

(8| |7|+|-){0,3} это начало

-~{}~ 09.04.09 17:51:

упс :) Мне надо не PCRE а POSIX
 

dimagolov

Новичок
Омск, лабораторки надо делать самому, а не клянчить на форумах.
 

PGP

Новичок
А можно я тут же напишу? :)
Название темы все равно такое же было бы.
Если не затруднит, подскажите - как правильно составить RE для вот такого случая.
В GET запросе передается переменная $message.
Мне нужно проверить что структура ее верная и чтобы она состояла из:
PHP:
$prefix."+".$int;
Где $prefix берется из БД, и может содержать практически любые символы, от буквенно-цифровых до специальных.
А нужно проверять правильно ли составлено $message, соответствует ли $prefix и задана ли $int (которая является INTEGER).
Которую затем просто вычленить и дальше работать.
Пробовал вот так.
PHP:
preg_match("/^($prefix)\+(\d+)$/", $message, $matches)
Но если префикс начинается например со знака '+', то это выражение уже не работает :(
 

punchos

Новичок
коли в $prefix есть спец символы...их вначале экранировать лучше...я так понимаю что функций готовых нет для этого...
поэтому придется делать что то типа
$prefix=str_replace("+","\+",$prefix);
ну и надо загнать все спец символы в массив...пробежаться по каждому символу в $prefix, проверить на вхождение в массив и экранировать в случии надобности...
а () в твоей регулярки тебе не нужны наверное...по крайней мере эти точно ($prefix)...() - служат для сохранения в переменную...а значение $prefix тебе и так известно
а вообще есть способ попроще, имхо, разбить строку $message на две по последнему вхождению + (strrpos)...первую часть сверить с $prefix...ну а вторую можно простой регуляркой...или is_int...
 
Сверху