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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярное выражение, не могу разобраться 
:(
    Опции темы
Prontit
  Дата 28.12.2011, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте!

Необходимо составить регулярное выражение, что-то типа ^(1|2|3)\d{5}, это я пытался сделать сам, оно не работает, но думаю по нему будет понятно что я пытался сделать  smile  (1ххххх, 2ххххх, 3ххххх) 

 smile 

PM MAIL ICQ Skype   Вверх
$дмитрий
Дата 28.12.2011, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Код

[1-3]\d{5}

PM MAIL   Вверх
Prontit
Дата 28.12.2011, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата($дмитрий @ 28.12.2011,  08:16)
Код

[1-3]\d{5}

не работает(

Код

<?php

$string = "100000";
$numberReg = "[1-3]\d{5}";

//Проверка
if (ereg($numberReg, $string) == 1)
{
echo "Успешно";
} 
else 
{
echo "Ошибка";
}

?>


или я что-то не так делаю?
PM MAIL ICQ Skype   Вверх
$дмитрий
Дата 28.12.2011, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Тебе нужно проверить является ли строка числом из 5 символов?
PM MAIL   Вверх
Prontit
Дата 28.12.2011, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата($дмитрий @ 28.12.2011,  08:26)
Тебе нужно проверить является ли строка числом из 5 символов?

длина строки должна быть строго 6 символов (цифр), и она должна начинаться с 1, 2 или 3
PM MAIL ICQ Skype   Вверх
ksnk
Дата 28.12.2011, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

$string = "100000";
$numberReg = "/^[1-3]\d{5}$/";
//Проверка
if (preg_match($numberReg, $string) == 1)
{
echo "Успешно";
} 
else 
{
echo "Ошибка";
}


Пора переходить на POSIX регулярки.
http://ru2.php.net/ereg
Цитата

Внимание
С версии PHP 5.3.0 эта функция считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Prontit
Дата 28.12.2011, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ksnk @ 28.12.2011,  09:26)
Код

$string = "100000";
$numberReg = "/^[1-3]\d{5}$/";
//Проверка
if (preg_match($numberReg, $string) == 1)
{
echo "Успешно";
} 
else 
{
echo "Ошибка";
}


Пора переходить на POSIX регулярки.
http://ru2.php.net/ereg
Цитата

Внимание
С версии PHP 5.3.0 эта функция считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.

а какую мне функцию использовать для проверки??
PM MAIL ICQ Skype   Вверх
$дмитрий
Дата 28.12.2011, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Можно так, можно вообще без регулярки
Код

<?
if(preg_match("#^[1-3]\d{5}$#", "100000")){
    ?>ok<?
}else{
    ?>bad<?
}
?>

PM MAIL   Вверх
ksnk
Дата 28.12.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(Prontit @  28.12.2011,  09:42 Найти цитируемый пост)
 какую мне функцию использовать для проверки?

Цитата(ksnk @  28.12.2011,  09:26 Найти цитируемый пост)
preg_match


Просто вcе уже перешли давно на posix и забыли(не знали) как надо работать с ereg , однако из дремучих книжек выкапываются примеры для ereg и вводят народ в заблуждение. 



Цитата($дмитрий @  28.12.2011,  09:50 Найти цитируемый пост)
 можно вообще без регулярки

Цитата($дмитрий @  28.12.2011,  09:50 Найти цитируемый пост)
preg_match("#^[1-3]\d{5}$#",

Совершенно  честно-честно, без регулярки  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
$дмитрий
Дата 28.12.2011, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Цитата

Совершенно  честно-честно, без регулярки

А что такое, я показал более сложный пример используя РВ, другой способ оставил на совести автора. Пусть включает мозг и пробует
PM MAIL   Вверх
Prontit
Дата 28.12.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Только начал работать с регулярками. Подскажите, пожалуйста, как лучше и оптимальнее всего решить эту задачу. 
PM MAIL ICQ Skype   Вверх
ksnk
Дата 28.12.2011, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(Prontit @  28.12.2011,  11:15 Найти цитируемый пост)
Только начал работать с регулярками. Подскажите, пожалуйста, как лучше и оптимальнее всего решить эту задачу.  

пользоваться preg_match и другими preg-... функциями вместо ereg. 

Чем не устраивают приведенные решения?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Prontit
Дата 28.12.2011, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ksnk @ 28.12.2011,  11:48)
Цитата(Prontit @  28.12.2011,  11:15 Найти цитируемый пост)
Только начал работать с регулярками. Подскажите, пожалуйста, как лучше и оптимальнее всего решить эту задачу.  

пользоваться preg_match и другими preg-... функциями вместо ereg. 

Чем не устраивают приведенные решения?

Все устраивает. Спасибо за совет!

сделал так

Код

<?php

$myString = "342388"; 
$numberReg = '#^[1-3]\d{5}$#'; 
if (preg_match($numberReg, $myString) == 1) 
{
    echo "OK";
}
else
{
    echo "ERROR";
} 

?>

PM MAIL ICQ Skype   Вверх
Prontit
Дата 5.1.2012, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Опять не получается разобраться с регуляркой "денежного формата", т.е. сначала от 1 до 5 цифр, потом "." (может быть, может не быть), и если она есть, то от 1 до 2х цифр в конце. 

что-то типа этого, но вариант не рабочий

Код


#^\d{1,5}.?\d{1,2}$#


 smile 

и еще надо регулярку сделать для дата/время "YYYY-MM-DDThh:mm:ss"

я так понимаю с нуля довольно тяжело написать такое, может быть есть готовые решения?

-------------------------------------------

нашел готовые решения, надо соединить части, и добавить Т между ними.

Дата в формате YYYY-MM-DD:
[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01]) 

Более строгая проверка
(19|20)\d\d-((0[1-9]|1[012])-(0[1-9]|[12]\d)|(0[13-9]|1[012])-30|(0[13578]|1[02])-31)

Время в формате HH:MM:SS
^([0-1]\d|2[0-3])(:[0-5]\d){2}$

Это сообщение отредактировал(а) Prontit - 5.1.2012, 09:30
PM MAIL ICQ Skype   Вверх
Evghenusi
Дата 5.1.2012, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

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



#^\d{1,5}(\.\d{1,2})?$#
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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