2012-01-18 3 views
0

Как я могу исключить ввод 0 в этом регулярном выражении? Пользователь должен иметь возможность ввести любое число ... но не нольRegEx - Исключить ноль

^([0-9]*|\d*\.\d{1}?\d*)$ 

Спасибо.

+0

только '0' или любое числовое значение, равное 0, как '.0' и т.д.? – Gumbo

+0

Судя по разделителю, OP хочет, чтобы числа с плавающей запятой обрабатывались, игнорируя математический ноль, т.е. не хочет соответствовать '0',' 0.0', '.0', '000' и ​​т. Д. Правильно ли это? –

+0

Хорошо, может быть, я не объяснил это правильно. Я имел в виду, что пользователь не должен иметь возможность вводить такие вещи, как 0 или 0.0 или 0.000, и т. Д. ... но им нужно разрешить вводить 0.1, 0.01, 0.001 ... 1.2 и т. Д. –

ответ

6

в следующем регулярное выражение

^(?!0*(\.0+)?$)(\d+|\d*\.\d+)$ 

Не соответствует

0 
0.0 
.0 

Но позволяет

.1 
0.01 
1.00 
1.1 
01.01 
10.10 
1 
+0

Я думаю ваше решение лучше, чем мое. Но вы ввели проблему. '\ d {1}?' отличается от '\ d?'. Первая делает '{1}' ленивым (без разницы ==> требуется одна цифра), а вторая - '\ d'. Таким образом, ваше выражение принимает, например, "1." что версия OPs не примет. Я думаю, что это решение будет заменено на '^ (?! 0 * (. 0 +)? $) (\ D | \ d * \. \ D +) $'. Если вы исправите эту ошибку, вы получите мой ответ и я удалю свой ответ. – stema

+0

Он не соответствует '01', например – SERPRO

+0

Вы, парни, правы, я удалил' {1} ', который ничего не значит, и сделал ошибку, заменив ее на'? '. Исправлено и совпадение '01'. –

0

Если я понимаю ваше требование, использовать [1-9] вместо [0-9] или \d:

^([1-9]*|[1-9]*\.[1-9]{1}?[1-9]*)$ 
0

Попробуйте это:.^([1-9] +) \ d + $ Для этого необходимо ввести по крайней мере, 1 цифра от 1-9

или^([1-9] ). \ d $ Это не потребует от вас ничего вводить но ограничить то, что вы вводите в 1-9

0

Вам просто нужно изменить: * [0-9] для [1-9] */d для [1-9]

Оригинал: ^([0-9]*|\d*\.\d{1}?\d*)$

Решение: ^([1-9]*|[1-9]*\.[1-9]{1}?[1-9]*)$

\ д является [0-9]

0

Что об этом:

^((?:[1-9][0-9]*)(?:\.[0-9]+)?)$ 

Match:

1 
5 
10 
22 
5000 
1.0 
10.10 
123.456 

Нет матча:

0 
00 
007 
0.0 
0.000 
0.50 
0.01 
5,432.10 
1,234,567 
10. 

Вы можете дополнительно зафиксировать его до определенных диапазонов, как описано здесь:

http://www.regular-expressions.info/numericranges.html

0

Эта работа только с натуральными числами до 5 цифр и ограничить пять 0 цифры слева (вы можете персонализировать этот предел)

/^[0]{0,5}[1-9]\d{0,4}$/ 

матч:

1 
01 .. 000001 
0100000 .. 0000010000 

не совпадают:

0 
00 .. 00000 
Смежные вопросы