Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синтаксис регулярных выр-й, не разберусь 
V
    Опции темы
Caretaker
Дата 6.7.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.7.2008

Репутация: нет
Всего: нет



Код

if(!preg_match('/(\d){3}-((\d){3})-((\d){8})/',$inn))
echo "INN should have 999-999-99999999";




вобщем нужно чтобы $inn было в формате 999-999-99999999 где 9 любая цифра.В программе у меня это работает так:если например в первой тройке цифр меньше трех то условие срабатывает,а если цифр больше указанного числа то программа говорит что все норм.А мне надо чтобы было в точности 999-999-99999999.Т.е не меньше и не больше цифр.какая ошибка в синтаксисе?
PM MAIL   Вверх
Feldmarschall
Дата 6.7.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



ну так оно и есть ровно так, как ты пишешь
Наглядно видно, что число 999999-999-99999999 попадает под твою маску.
надо, наверное, проверять всю строку, а не её часть?
PM   Вверх
Caretaker
Дата 6.7.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.7.2008

Репутация: нет
Всего: нет



не пойму...можешь привести исправленный код?
PM MAIL   Вверх
Feldmarschall
Дата 6.7.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Нет, не могу.
http://ru2.php.net/manual/ru/regexp.reference.php - тут все написано.
тебе надо, чтобы твой шаблон совпадал со строкой полностью, от начала до конца.
PM   Вверх
Caretaker
Дата 6.7.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.7.2008

Репутация: нет
Всего: нет



спасибо.просто на пхп сижу всего день.на одно задание только.и изза незнания синтаксиса работа идет немного долго....
PM MAIL   Вверх
Feldmarschall
Дата 6.7.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Ну, для человека, который на пхп сидит всего день, ты весьма продвинут.
Тут некоторые годами сидят, и даже такую регулярку, или что-то аналогичное по трудозатратам составить не в состоянии - клянчат, чтобы за них все написали.
Нужные тебе модификаторы находятся в самом верху списка.

строго говоря, синтаксис регулярок - это синтаксис регулярок. к пхп он имеет такое же отношение, как и к яве. 

Это сообщение отредактировал(а) Feldmarschall - 6.7.2008, 17:03
PM   Вверх
Caretaker
Дата 6.7.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.7.2008

Репутация: нет
Всего: нет



вроде разобрался.)спасибо.пхп канеш круто но мне ближе C#.)но все же штука неплохая.со своими плюсами)
PM MAIL   Вверх
Caretaker
Дата 6.7.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.7.2008

Репутация: нет
Всего: нет



как я понял нужно чтото вроде этого:
Код

 if(!preg_match('/((\d{3}-){2}\d{8})/s',$inn))
  
echo "INN should have 999-999-99999999";  


но работает также...шаблон вроде правильно написан?
PM MAIL   Вверх
Mal Hack
Дата 6.7.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код

if(!preg_match('/^\d{3}\-\d{3}\-\d{8})$/',$inn))

PM ICQ   Вверх
Sannis
Дата 6.7.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 6
Всего: 13



Нет smile
Во-первых, так как вам не важно, что там за цифры, а нужно только проверить шаблон, то от скобок можно избавиться.
Во-вторых, о чём и говорил Feldmarschall, нужно ограничить границы, чтобы не подходили строки, содержащие нужное в качестве подстроки. Для этого есть модификаторы начала и конца строки либо, например, границы слова. О них сказано в начале мануала.

Добавлено через 36 секунд
Т.е. то что привёл Mal Hack.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
Caretaker
Дата 6.7.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.7.2008

Репутация: нет
Всего: нет



Warning: preg_match() [function.preg-match]: Compilation failed: unmatched parentheses at offset 20 in Z:\home\taksnet.ru\www\ver2.php on line 30


вот что выдает када вставляю код Mal Hack'a
что это?

Добавлено через 3 минуты и 6 секунд
line 30 это как раз код который я вставил
PM MAIL   Вверх
Sannis
Дата 6.7.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 6
Всего: 13



Ваша, на пару, невнимательность. Надо убрать скобку лишнюю и не экранировать дефисы, они не в диапазоне.
Код

if( !preg_match('/^\d{3}-\d{3}-\d{8}$/', $inn) )



--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
Caretaker
Дата 6.7.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.7.2008

Репутация: нет
Всего: нет



Большое спасибо!без помощи бы разбирался очень долго.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.