Як включити від’ємні десяткові числа до цього регулярного виразу?


89

Як мені зрівняти негативні числа також за допомогою цього регулярного виразу? Цей регулярний вираз чудово працює з позитивними значеннями, але я хочу, щоб він також допускав і негативні значення, наприклад -10, -125,5 тощо.

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

Дякую


1
@DanPuzey Ви не бачили регулярний вираз, який він розмістив?
Нолонар,


я спробував додати [-] на початку, але це не спрацювало. я також спробував поєднання невеликих змін
user1786107

спробуйте це ^ -? \ d + (\. \ d +)? $
Civa

@DanPuzey ваші слова нічого не додають до обговорення і недобрі
Вассадамо,

Відповіді:


173

Ви повинні додати необов’язковий дефіс на початку, додавши -?( ?це квантор, що означає один або нуль випадків ):

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

Я перевірив це в Rubular з такими значеннями:

10.00
-10.00

і обидва відповідали, як очікувалося.


2
вам слід уникнути крапки, тобто^-?[0-9]\d*(\.\d+)?$
Алекс Шестеров

14
Якщо існує потреба в явному захопленні позитивних чисел (+10,00, що використовується в деяких додатках), які ви можете використовувати^[-+]?[0-9]\d*(\.\d+)?$
Семафор,

127

Деякі приклади регулярних виразів:

Позитивні цілі числа :

^\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}$

11

Я не знаю, навіщо це потрібно спочатку [0-9].

Спробуйте:

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

Оновлення

Якщо ви хочете бути впевнені, що у вас буде цифра на тому місці, тоді використовуйте

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

1
Можливо, просто для того, щоб гарантувати цифру там, де це ^-?\d+(\.\d+)?$має спрацювати, якщо це так
Cemafor

Найбільш влучна відповідь. Я не думаю, що [0-9] є необхідним, як показано у прийнятій відповіді.
UzumakiL

3

ОНОВЛЕНО (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

Змінити -*на, -?оскільки він відповідає -------------.
Тото

Я вніс деякі додаткові зміни, і зараз чудово працює. Будь ласка, перевірте це =)
Пачо Зуніга

1

Це дозволить символ -або або +лише тоді, коли за ним буде цифра:

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

1

Це дозволить отримувати як позитивні, так і негативні цілі числа

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


1

У мене є кілька експериментів щодо регулярного виразу в URL-адресі django, для якого потрібно було від негативних до позитивних чисел

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

Давайте зосередимося на цій (\-\d+|\d+)частині та ігноруючи інші. Ця крапка з комою |означає АБО в регулярному виразі, тоді негативне значення збігатиметься з цією \-\d+частиною, а позитивне значення в цьому\d+



0

Просто додайте маркер 0 або 1:

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

Андре побив мене, він теж має рацію, немає необхідності в жетоні [0-9].
Banksy,



0

Регулярний вираз для числа, додатковий десятковий знак, необов'язковий мінус:

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

працює для від’ємного цілого, десяткового, від’ємного з десятковим


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

дозволити:

23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234

0

Якщо у вас є це val="-12XXX.0abc23"і ви хочете витягти лише десяткове число, у цьому випадку цей регулярний вираз ( ^-?[0-9]\d*(\.\d+)?$) не допоможе вам його досягти.
це правильний код із правильним регулярним виразом виявлення:

var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.