Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка регистр. номер автомобиля!
 
 автор: Artemy   (09.12.2005 в 17:44)   письмо автору
 
 

Всем здрасти!
В очередной раз прошу у Вас помощи.
Ситуация такая, я составил регулярное выражение, оно прекрасно работает, но у меня к нему есть замечание.
Вот код.
<?PHP
 $AutoNum
="a898aa99";
 if(
preg_match("/^[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{2}[0-9]{2}$/",$AutoNum)){
   print 
1;
 }else{
   print 
2;
 }
?>

Замечание следующее, если проверять номер типа а000аа99, то он его проглатывает, но по идеи ведь такого номера не существует!

Как с этим бороться?

   
 
 автор: Евгений Петров   (09.12.2005 в 17:58)   письмо автору
 
   для: Artemy   (09.12.2005 в 17:44)
 

А какие существуют?

   
 
 автор: Artemy   (09.12.2005 в 18:08)   письмо автору
 
   для: Евгений Петров   (09.12.2005 в 17:58)
 

Выше написанное выражение ориентированно под современные номера белого цвета!
Они должны быть написанные кирилицей!

   
 
 автор: Евгений Петров   (09.12.2005 в 18:11)   письмо автору
 
   для: Artemy   (09.12.2005 в 18:08)
 

Прошу прощение, я на Украине живу. :))) У нас номера примерно такие
АР 1234 АН

   
 
 автор: Artemy   (09.12.2005 в 18:14)   письмо автору
 
   для: Евгений Петров   (09.12.2005 в 18:11)
 

Ну так может предложите свою версию рег. выр-ния!?

   
 
 автор: isset   (09.12.2005 в 18:33)   письмо автору
 
   для: Artemy   (09.12.2005 в 18:14)
 

"У меня есть регулярное выражение (.*), но оно проглатывает и неправильное значение , например 123, как мне сделать чтобы проглатовало только правильные?"

Я к тому , что уточните почему номер является неправильным...

   
 
 автор: Artemy   (09.12.2005 в 18:51)   письмо автору
 
   для: isset   (09.12.2005 в 18:33)
 

Прощу прощения, это описка! Как сделать, чтоб он не проглатывал номер типа a000aa99!

   
 
 автор: Евгений Петров   (09.12.2005 в 19:13)   письмо автору
 
   для: Artemy   (09.12.2005 в 18:51)
 

А чем этот номер отличается от a898aa99. Какие номера вам нужно проглатывать?, те у которых 2, 3 и 4 цифра нули или те у которых последние две 9... или и то и другое? Хотите ясный ответ напишите ясный вопрос.

   
 
 автор: Artemy   (09.12.2005 в 20:53)   письмо автору
 
   для: Евгений Петров   (09.12.2005 в 19:13)
 

Просто такого номера не существует(a000aa99), а мне надо четко проверять их на вилидность!
В принцепе то регулярное выражение, которое я написал выше, меня устаивает. Но этот факт что пользователь может ввести номер типа C000PT77 меня смущает!

   
 
 автор: cheops   (09.12.2005 в 20:59)   письмо автору
 
   для: Artemy   (09.12.2005 в 20:53)
 

Евгения Петрова наверное мучает тот же вопрос что и меня: В чём состоит неправильность номера C000PT77 - в трёх нулях? Номера C001PT77, C010PT77 и C100PT77 правильные? и вообще какие правила нумерации машин - что можно использовать, а что нет? Допустим на денежных банкнотах нельзя от балды ставить номер - там определённый алгоритм и некоторый номера в принципе никогда не встречаются, а в автомобильных номерах?

   
 
 автор: Artemy   (09.12.2005 в 21:16)   письмо автору
 
   для: cheops   (09.12.2005 в 20:59)
 

Да! Вы правы, не верность регистрацинного номера заключается в трех нулях!

   
 
 автор: cheops   (10.12.2005 в 01:17)   письмо автору
 
   для: Artemy   (09.12.2005 в 21:16)
 

Чего-то ничего умнее чем вырезать со 2 по 4 символ и сравнивать их с "000" придумать не могу с ходу...

   
 
 автор: isset   (10.12.2005 в 01:33)   письмо автору
 
   для: cheops   (10.12.2005 в 01:17)
 

а можно так :)

<?php
$AutoNum
="a808aa00";
if(
preg_match("/^[a-zA-Z]{1}[0-9]{3}(?<!0{3})[a-zA-Z]{2}[0-9]{2}$/",$AutoNum)){
   print 
1;
}else{
   print 
2;
}
?>

   
 
 автор: Artemy   (10.12.2005 в 18:44)   письмо автору
 
   для: isset   (10.12.2005 в 01:33)
 

Спасибо isset! Это то, что нужно!

   
 
 автор: Евгений Петров   (09.12.2005 в 21:17)   письмо автору
 
   для: cheops   (09.12.2005 в 20:59)
 

Или может Вам надо скрипт, который будет сверяться с БД ГАИ? :)))

   
 
 автор: Artemy   (09.12.2005 в 21:18)   письмо автору
 
   для: Евгений Петров   (09.12.2005 в 21:17)
 

Нет! ;-))

   
 
 автор: @ndry   (13.12.2005 в 15:34)   письмо автору
 
   для: Евгений Петров   (09.12.2005 в 21:17)
 

А я бы от такого скрипта не отказался!

   
 
 автор: Евгений Петров   (09.12.2005 в 18:34)   письмо автору
 
   для: Artemy   (09.12.2005 в 18:14)
 

Ну это проще простого:
<?
  
if(preg_match("/^[а-я]{2} [0-9]{4} [а-я]{2}$/i"))
   {
      
// ...
   
}
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования