Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярное выражение на проверку дробного числа, Возможно ли? 
:(
    Опции темы
Gideon
Дата 27.11.2013, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дробное число в тексте должно быть не длиннее n симпволов, с учетом разделителя. При этом в дробной части должно быть не более m символов. И количество символов в целой и дробной частях зависимы. Т.е. <n-m-1>,m.
PM MAIL   Вверх
Akella
Дата 27.11.2013, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



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


Новичок



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

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



Делал просто, регулярное составил \d+\,\d+. Оно видит все, а нужно чтобы дробная часть не более 3 цифр, а все 7 было. Примеры: 123,123; 1234,12; 12345,1; 12,1 - это правильные, а не правильные вот - 1,1234; 1234,123
PM MAIL   Вверх
Poseidon
Дата 27.11.2013, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Цитата(Gideon @  27.11.2013,  17:13 Найти цитируемый пост)
Оно видит все, а нужно чтобы дробная часть не более 3 цифр, а все 7 было
"Не более 3 цифр" можно добиться с помощью квантификатора {1, 3}, а вот "все не более 7"... Наврятли это можно сделать регулярками. Я бы делал выборку регуляркой по первому условию, а потом уже проверял бы длину результата через Length 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Akella
Дата 27.11.2013, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Gideon, читай про квантификацию http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%....D0.B5.D0.B9.29

Добавлено @ 20:39
Цитата(Gideon @  27.11.2013,  17:13 Найти цитируемый пост)
дробная часть не более 3 цифр


Цитата(Gideon @  27.11.2013,  17:13 Найти цитируемый пост)
а не правильные вот - 1,1234; 1234,123 

Чем неправильное число "1234,123"? Ведь здесь не более трёх цифр



Добавлено @ 20:42
Вот так можно
\d+,\d{0,3}[^\d]

\d+ - означает, что должно быть одна или более цифр
d{0,3} - означает, что чисел должно быть три или менее
[^\d] - означает, что должна быть не цифра

Запятую не обязательно экранировать знаком \

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


Delphi developer
****


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

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



Цитата(Akella @ 27.11.2013,  20:37)
Чем неправильное число "1234,123"? Ведь здесь не более трёх цифр

Оно не правильно тем, что здесь всего 8 знаков, а по условию должно быть не более семи. Твоя регулярка это, кстати, тоже не учитывает.

Добавлено через 4 минуты и 31 секунду
Цитата(Akella @ 27.11.2013,  20:37)
[^\d] - означает, что должна быть не цифра

"Не цифру" можно указать как \D


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Akella
Дата 28.11.2013, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Poseidon @  28.11.2013,  01:58 Найти цитируемый пост)
Оно не правильно тем, что здесь всего 8 знаков, а по условию должно быть не более семи. Твоя регулярка это, кстати, тоже не учитывает.


Пожалуйста:
(\d+,\d{0,3}[^\d]){0,7}
PM MAIL   Вверх
Poseidon
Дата 28.11.2013, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Не плохо. Но сюда влезет этот самый символ "не число" Позволю себе немного "причесать" пример:

Код

(\D|^)(\d+(\.|,)\d{1,3}){1,7}(\D|$)


Искомое вернет вторая группировка.

Это сообщение отредактировал(а) Poseidon - 28.11.2013, 23:37


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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