| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Регулярное выражение на проверку дробного числа |
| Автор: Gideon 27.11.2013, 13:27 |
| Дробное число в тексте должно быть не длиннее n симпволов, с учетом разделителя. При этом в дробной части должно быть не более m символов. И количество символов в целой и дробной частях зависимы. Т.е. <n-m-1>,m. |
| Автор: Akella 27.11.2013, 16:28 |
| покажи как делал, какие примеры обработал |
| Автор: Gideon 27.11.2013, 17:13 |
| Делал просто, регулярное составил \d+\,\d+. Оно видит все, а нужно чтобы дробная часть не более 3 цифр, а все 7 было. Примеры: 123,123; 1234,12; 12345,1; 12,1 - это правильные, а не правильные вот - 1,1234; 1234,123 |
| Автор: Akella 27.11.2013, 20:37 |
| Gideon, читай про квантификацию http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#.D0.9A.D0.B2.D0.B0.D0.BD.D1.82.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.86.D0.B8.D1.8F_.28.D0.BF.D0.BE.D0.B8.D1.81.D0.BA_.D0.BF.D0.BE.D1.81.D0.BB.D0.B5.D0.B4.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.BE.D1.81.D1.82.D0.B5.D0.B9.29 Добавлено @ 20:39 Чем неправильное число "1234,123"? Ведь здесь не более трёх цифр Добавлено @ 20:42 Вот так можно \d+,\d{0,3}[^\d] \d+ - означает, что должно быть одна или более цифр d{0,3} - означает, что чисел должно быть три или менее [^\d] - означает, что должна быть не цифра Запятую не обязательно экранировать знаком \ |
| Автор: Poseidon 28.11.2013, 01:58 | ||||
Оно не правильно тем, что здесь всего 8 знаков, а по условию должно быть не более семи. Твоя регулярка это, кстати, тоже не учитывает. Добавлено через 4 минуты и 31 секунду
"Не цифру" можно указать как \D |
| Автор: Akella 28.11.2013, 22:12 | ||
Пожалуйста: (\d+,\d{0,3}[^\d]){0,7} |
| Автор: Poseidon 28.11.2013, 23:33 | ||
Не плохо. Но сюда влезет этот самый символ "не число" Позволю себе немного "причесать" пример:
Искомое вернет вторая группировка. |