83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
|
|
1 | |
Регулярное выражение для целого и дробного типа(со знаком)26.01.2016, 17:45. Показов 18543. Ответов 16
Добрый день.
Требуется написать регулярное выражение, которое будет принимать целые и дробные числа со знаком или без него. Для дробных чисел приемлема запись вида ".5"(0.5). В данный момент имею выражение вида: Код
regExp: /(?=.)([+-]?(\d*)(\.(\d+))?)/ Возможно ли избежать такой ситуации и если да, то как?
0
|
26.01.2016, 17:45 | |
Ответы с готовыми решениями:
16
Регулярное выражение для дробного числа от 0 до 1 Регулярное выражение для типа данных MYSQL Регулярное выражение для проверки поля типа float Регулярное выражение для поля ввода числа типа float |
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 |
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 |
0
|
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
|
|
26.01.2016, 20:27 [ТС] | 9 |
OneMoreGres, вроде работает.
- а можете объяснить на пальцах что тут происходит? Точнее, как работает [?= __ ]
0
|
72 / 72 / 33
Регистрация: 07.11.2015
Сообщений: 281
|
|
26.01.2016, 20:33 | 10 |
[+-]? только если за ним следует [\d\.] (цифра для целого и дроби или точка для дроби без целой части).С 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
|
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
|
|
26.01.2016, 21:22 [ТС] | 17 |
Amok, думаю такой вариант тоже возможен. Выглядит правильным, по крайней мере.
0
|
26.01.2016, 21:22 | |
26.01.2016, 21:22 | |
Помогаю со студенческими работами здесь
17
Error C1017: недопустимое константное выражение целого типа Какой компонент типа статус бара, подойдет для отображения дробного значения процента? Сравнение дробного и целого числа Регулярное выражение для поиска Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |