С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/103: Рейтинг темы: голосов - 103, средняя оценка - 4.90
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
1

Регулярное выражение для целого и дробного типа(со знаком)

26.01.2016, 17:45. Показов 18650. Ответов 16

Author24 — интернет-сервис помощи студентам
Добрый день.
Требуется написать регулярное выражение, которое будет принимать целые и дробные числа со знаком или без него. Для дробных чисел приемлема запись вида ".5"(0.5).
В данный момент имею выражение вида:
Код
regExp: /(?=.)([+-]?(\d*)(\.(\d+))?)/
Но проблема в том, что оно принимает строку, содержащую только знак('+' или '-').
Возможно ли избежать такой ситуации и если да, то как?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2016, 17:45
Ответы с готовыми решениями:

Регулярное выражение для дробного числа от 0 до 1
Помогите составить регулярное выражение для дробного числа от 0 до 1. Число типа double, после...

Регулярное выражение для типа данных MYSQL
Здравствуйте. При обращении к базе запросом SHOW COLUMNS FROM `table` Возвращается массив вида:...

Регулярное выражение для проверки поля типа float
Привет, Релиб! Подскажите плз ,какое выражение нужно, чтоб проверить, что в поле ввели именно...

Регулярное выражение для поля ввода числа типа float
Сколько ни гуглил, ответа на свой вопрос не нашел. Надо сделать регулярку для поля ввода, куда...

16
6 / 6 / 2
Регистрация: 17.11.2012
Сообщений: 70
26.01.2016, 19:01 2
/del (
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 19:08  [ТС] 3
Hellko,
Регулярное выражение для целого и дробного типа(со знаком)
0
72 / 72 / 33
Регистрация: 07.11.2015
Сообщений: 281
26.01.2016, 19:48 4
/(?=.)([+-]?(\d*)(\.(\d+))+)/?
Дробная часть же обязательна?
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 19:56  [ТС] 5
OneMoreGres, не всегда. Число может быть целым или дробным. И если оно дробное, то может иметь целую часть в явном виде(например, 1.43) или не иметь(.042( = 0.042)). Но если оно целое, то дробная часть, очевидно, не нужна.

Добавлено через 5 минут
Кроме того, с какой целью второй '+' в конце? Выражение (\d+) подразумевает, насколько я понимаю, что у нас будет как минимум одна цифра обязательно. Если бы дробная часть была обязательна, то достаточно было бы убрать '?' в конце.
0
72 / 72 / 33
Регистрация: 07.11.2015
Сообщений: 281
26.01.2016, 20:03 6
Лучший ответ Сообщение было отмечено inviter42 как решение

Решение

Пардон, невнимательно прочитал. Тогда как-то так: (?=.)([+-]?(?=[\d\.])(\d*)(\.(\d+))?)
Теперь точно на 1 проблему больше )

+ в конце, чтобы обязательно была . с числом. Но это я пропустил, что еще целые надо.
1
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 20:07  [ТС] 7
OneMoreGres, дык она ж и так обязательно будет, почему бы ей не быть? В смысле, чтобы ввести дробную часть надо поставить точку даже с чисто логической точки зрения.
0
72 / 72 / 33
Регистрация: 07.11.2015
Сообщений: 281
26.01.2016, 20:19 8
Цитата Сообщение от inviter42 Посмотреть сообщение
дык она ж и так обязательно будет, почему бы ей не быть?
Повторюсь.
Цитата Сообщение от OneMoreGres Посмотреть сообщение
Но это я пропустил, что еще целые надо.
Так что тот вариант не актуален.
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 20:27  [ТС] 9
OneMoreGres, вроде работает.
Цитата Сообщение от OneMoreGres Посмотреть сообщение
(?=[\d\.])
- а можете объяснить на пальцах что тут происходит? Точнее, как работает [?= __ ]
0
72 / 72 / 33
Регистрация: 07.11.2015
Сообщений: 281
26.01.2016, 20:33 10
(?=regexp) A zero-width positive lookahead assertion. For example, \w+(?=\s) matches a word followed by whitespace, without including whitespace in the MatchResult
Ловит [+-]? только если за ним следует [\d\.] (цифра для целого и дроби или точка для дроби без целой части).

Цитата Сообщение от inviter42 Посмотреть сообщение
вроде работает
С regexp'ами всегда так )
1
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 20:42  [ТС] 11
OneMoreGres, то есть выражение (?=regexp) опирается при поиске соответствия на выражение, которое стоит до него, плюс regexp, но только если они вместе(первое после второго), я правильно понял?
0
72 / 72 / 33
Регистрация: 07.11.2015
Сообщений: 281
26.01.2016, 20:50 12
Да. То, что перед (?=regexp) срабатывает только если за ним следует regexp. Сам regexp не ловится.
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 20:52  [ТС] 13
OneMoreGres, отлично, я всё понял. Спасибо за помощь и разъяснения!
0
68 / 68 / 17
Регистрация: 20.01.2015
Сообщений: 347
26.01.2016, 21:07 14
Лучший ответ Сообщение было отмечено inviter42 как решение

Решение

\\d*\\.?\\d+
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 21:11  [ТС] 15
Amok, вы забыли знак - я указал в тз, чтобы нужны числа со знаком(+ или -). В любом случае ответ был дан OneMoreGres.
0
68 / 68 / 17
Регистрация: 20.01.2015
Сообщений: 347
26.01.2016, 21:16 16
inviter42, можно вначале (+|-)? Этот пример есть прямо в документации Qt здесь
0
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
26.01.2016, 21:22  [ТС] 17
Amok, думаю такой вариант тоже возможен. Выглядит правильным, по крайней мере.
0
26.01.2016, 21:22
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2016, 21:22
Помогаю со студенческими работами здесь

Error C1017: недопустимое константное выражение целого типа
в общем был у меня такой код: ... #if numeric_limits<T>::is_integer typedef long long (Type);...

Какой компонент типа статус бара, подойдет для отображения дробного значения процента?
Подскажите, какой компонент типа статус бара, подойдет для отображения дробного значения процента?...

Сравнение дробного и целого числа
Есть два числа - A = 30 - целое B = 30,75 - дробное Как мне сделать сравнение между ними - ...

Регулярное выражение для поиска
Помогите с регулярными выражениями при парсинге. Скачиваю страницу. <td colspan="1"><font...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru