Как включить отрицательные десятичные числа в это регулярное выражение?
Как я могу сопоставить отрицательные числа также этим регулярным выражением? Это регулярное выражение отлично работает с положительными значениями, но я хочу, чтобы оно также допускало отрицательные значения, например -10, -125.5 и т. д.
^[0-9]d*(.d+)?$
спасибо
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+
регулярное выражение для числа, необязательная десятичная точка, необязательный минус:
^-?(\d*\.)?\d+$;
работает для отрицательного целого, десятичного, отрицательного с десятичным
это сработало для меня,позволяя как отрицательные, так и положительные числа:
\-*\d+
при использовании C#:
Regex.Match(someString, @"\-*\d+").Value;