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

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

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

 

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

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

тема: Только цифры
 
 автор: Максимыч   (04.07.2006 в 12:50)   письмо автору
 
 

Как с помощью регулярного выражения проверить чтобы в строке были только цифры от 0 до 9? Помогите плиз чайнику.
Есть идея что это должно быть так:

ereg("[0-9]",$icq);

Я прав?

   
 
 автор: Snorri   (04.07.2006 в 13:50)   письмо автору
 
   для: Максимыч   (04.07.2006 в 12:50)
 

просто используйте функцию if(is_numeric($icq))

   
 
 автор: cheops (из кафе)   (04.07.2006 в 16:27)
 
   для: Максимыч   (04.07.2006 в 12:50)
 

Лучше так
<?php
  
if(!preg_match("|^[0-9]+$|",$icq)) exit("Это не число");
?>

   
 
 автор: Максимыч   (05.07.2006 в 17:05)   письмо автору
 
   для: cheops (из кафе)   (04.07.2006 в 16:27)
 

А можно объяснить на пальцах как расшифровывается |^[0-9]+$| ? Что значит вертикальная черта?

   
 
 автор: cheops   (06.07.2006 в 00:27)   письмо автору
 
   для: Максимыч   (05.07.2006 в 17:05)
 

Здесь вертикальная черта - граница регулярного выражения, если вы замените её на любой другой символ, ничего страшного не произойдёт, так, |^[0-9]+$| можно заменить и на #^[0-9]+$# и на /^[0-9]+$/. ^ - сообщает что регулярное выражение должно соответствовать слову, начиная с самого начала, а $ - привязывает регулярное выражение к концу. Без них регулярное выражение может найти цифры, где-нибудь в середине и быть довольным: "цццад выа дв 45 влваовды ыд". [0-9] означает один символ от 0 до 9. [0-9]+ означает один или более символов от 0 до 9.

   
 
 автор: Максимыч   (06.07.2006 в 11:18)   письмо автору
 
   для: cheops   (06.07.2006 в 00:27)
 

Хорошо. А теперь усложним задание. В номере асе могжет содержаться от 6 до 9 цифр. И плюс - он не может начинаться на 0. Правильно я составил регулярное выражение л\для данного случая?

<?php 
  
if(!preg_match("|^[1-9]{1}[0-9]{5,8}$|",$icq)) exit("Это не номер icq"); 
?> 

   
 
 автор: cheops   (06.07.2006 в 11:59)   письмо автору
 
   для: Максимыч   (06.07.2006 в 11:18)
 

Да, его можно даже упростить таким образом
<?php 
  
if(!preg_match("|^[1-9][0-9]{5,8}$|",$icq)) exit("Это не номер icq"); 
?>

   
 
 автор: Максимыч   (06.07.2006 в 12:25)   письмо автору
 
   для: cheops   (06.07.2006 в 11:59)
 

Отлично. Спасибо за помощь.
А вот если надо проверить правильность ввода номера телефона в формате: (495) 666-66-66. Как быть? Это верно?

<?php 
  
if(!preg_match("|^\([0-9]{3}\)[\s][0-9]{3}[-][0-9]{2}[-][0-9]{2}$|",$phone)) exit("Это не номер телефона"); 
?> 

   
 
 автор: cheops   (06.07.2006 в 20:52)   письмо автору
 
   для: Максимыч   (06.07.2006 в 12:25)
 

Да, верно. Можно символы - не заключать в квадратные скобки, а писать прямо так.

   
 
 автор: Oligarx   (08.07.2006 в 13:51)   письмо автору
 
   для: cheops   (06.07.2006 в 11:59)
 

а как сделать, чтоб например пользователь ввёл 123-122-543 а рег. выражение ему не тыкало мол это не аська а просто вырезало дифисы и всё нормально

да и ваще ... есть у когонибуть универс. решение для проверки аськи ?

   
 
 автор: cheops   (08.07.2006 в 15:07)   письмо автору
 
   для: Oligarx   (08.07.2006 в 13:51)
 

Да вы просто вырезайте дефисы у номера перед проверкой
<?php
  $icq 
str_replace("-","",$icq);
?>

   
Rambler's Top100
вверх

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