Как включить отрицательные десятичные числа в это регулярное выражение?


Как я могу сопоставить отрицательные числа также этим регулярным выражением? Это регулярное выражение отлично работает с положительными значениями, но я хочу, чтобы оно также допускало отрицательные значения, например -10, -125.5 и т. д.

^[0-9]d*(.d+)?$

спасибо

12 54

12 ответов:

вы должны добавить необязательный дефис в начале, добавив -? (? - это Квантор смысл один или ноль вхождений):

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

Я проверил его в Rubular с этими значениями:

10.00
-10.00

и оба совпали, как и ожидалось.

некоторые примеры регулярных выражений:

Положительные Целые Числа:

^\d+$

Отрицательные Целые Числа:

^-\d+$

целое:

^-?\d+$

Положительное Число:

^\d*\.?\d+$

Отрицательное Число:

^-\d*\.?\d+$

положительное число или отрицательное число:

^-?\d*\.{0,1}\d+$

телефон номер:

^\+?[\d\s]{3,}$

телефон с кодом:

^\+?[\d\s]+\(?[\d\s]{10,}$

1900-2099 год:

^(19|20)[\d]{2,2}$

дата (ДД ММ гггг, д/М/гггг и т. д.):

^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$

IP v4:

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$

Я не знаю, зачем вам это нужно в первую очередь [0-9].

попробуй:

^-?\d*(.\d+)?$

обновление

Если вы хотите быть уверены, что у вас будет цифра на одном месте, то используйте

^-?\d+(.\d+)?$

Это позволит a - или + символ только тогда, когда за ним следует число:

 ^([+-](?=\.?\d))?(\d+)?(\.\d+)?$

обновление(13/08/2014): Это самый лучший код для положительных и отрицательных чисел =)

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

Я пробовал с этой цифры и работает нормально:

-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701

Это позволит как положительные, так и отрицательные целые числа

ValidationExpression="^-?[0-9]\d*(\d+)?$ "

у меня есть некоторые эксперименты о регулярных выражениях в Django url, которые требуют от отрицательных до положительных чисел

^(?P<pid>(\-\d+|\d+))$

давайте сосредоточимся на этом (\-\d+|\d+) часть и игнорируя другие, эта точка с запятой | означает или в регулярном выражении, то отрицательное значение будет соответствовать этому \-\d+ часть, и положительное значение в этой \d+

просто добавьте 0 или 1 маркер:

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

только для отрицательного числа, это идеально.

^-\d*\.?\d+$

регулярное выражение для числа, необязательная десятичная точка, необязательный минус:

^-?(\d*\.)?\d+$;

работает для отрицательного целого, десятичного, отрицательного с десятичным

это сработало для меня,позволяя как отрицательные, так и положительные числа:

 \-*\d+

при использовании C#:

Regex.Match(someString, @"\-*\d+").Value;
^[+-]?\d{1,18}(\.\d{1,2})?$

принимает положительные или отрицательные десятичные значения.