Регулярное выражение, которое соответствует только целым числам - PullRequest
42 голосов
/ 28 января 2012

Я сейчас использую шаблон: \b\d+\b, тестирую его с помощью следующих записей:

numb3r 
2
3454 
3.214
test

Я хочу, чтобы он только перехватывал 2 и 3454. Он отлично работает для перехвата числовых слов, за исключением того, что границы (\b) включают "." в качестве отдельного слова. Я пытался исключить точку, но у меня были проблемы с написанием шаблона.

По сути, я хочу удалить целочисленные слова и только их.

Ответы [ 9 ]

76 голосов
/ 28 января 2012

Все, что вы хотите, это следующее регулярное выражение:

^\d+$
44 голосов
/ 02 февраля 2014

Аналогично manojlds, но содержит необязательные отрицательные / положительные числа:

var regex = /^[-+]?\d+$/;

РЕДАКТИРОВАТЬ

Если вы не хотите разрешать нули впереди (023 становится недействительным), вы могли бы написать это так:

var regex = /^[-+]?[1-9]\d*$/;

РЕДАКТИРОВАТЬ 2

Как указал @DmitriyLezhnev, если вы хотите, чтобы число 0 было допустимым само по себе, но все еще недействительным, когдаперед другими номерами (пример: 0 допустим, но 023 недействителен).Тогда вы могли бы использовать

var regex = /^([+-]?[1-9]\d*|0)$/
27 голосов
/ 28 января 2012

Вместо этого вы можете использовать lookaround, если все, что вы хотите сопоставить, это пробел:

(?<=\s|^)\d+(?=\s|$)
1 голос
/ 26 сентября 2018

Попробуйте /^(?:-?[1-9]\d*$)|(?:^0)$/.

Соответствует положительным, отрицательным числам и нулям.

Не соответствует вводу, как 00, -0, +0, -00, +00, 01.

Онлайн-тестирование доступно на http://rubular.com/r/FlnXVL6SOq

1 голос
/ 24 июля 2018

Я бы добавил это как комментарий к другим хорошим ответам, но мне нужно больше репутации, чтобы сделать это. При необходимости убедитесь, что вы добавили научную запись, т. Е. 3e4 = 30000. Это поведение по умолчанию во многих языках. Я нашел следующее регулярное выражение для работы:

/^[-+]?\d+([Ee][+-]?\d+)?$/;
//          ^^              If 'e' is present to denote exp notation, get it
//             ^^^^^          along with optional sign of exponent
//                  ^^^       and the exponent itself
//        ^            ^^     The entire exponent expression is optional
1 голос
/ 13 февраля 2017
^([+-]?[0-9]\d*|0)$

примет числа с ведущими «+», ведущими «-» и ведущими «0»

0 голосов
/ 28 марта 2019

Это просто разрешить натуральные числа.

^[0-9]*[1-9][0-9]*$
0 голосов
/ 15 сентября 2016

^ (- +)? [1-9] [0-9] * $ начинается с - или + 0 или 1 раз, затем вам нужно ненулевое число (потому что нет такого -0 или +0), а затем оно продолжается с любого числа от 0 до 9

0 голосов
/ 12 сентября 2016

Это сработало в моем случае, когда мне нужны были положительные и отрицательные целые числа, которые НЕ должны включать нулевые начальные числа, например 01258, но, конечно, должны включать 0

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

Пример допустимых значений: "3", "-3 "," 0 "," -555 "," 945465464654 "

Пример недопустимых значений:" 0.0 "," 1.0 "," 0.7 "," 690.7 "," 0.0001 "," a"," "," ",". "," - "," 001 "," 00.2 "," 000.5 "," .3 "," 3. "," -1 "," +100 "," --1 "," -.1 "," -0 "," 00099 "," 099 "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...