Каково регулярное выражение только для положительных целых чисел? (ноль не допускается) - PullRequest
3 голосов
/ 05 марта 2012

Каково регулярное выражение только для положительных целых чисел? (ноль не допускается)

Мне удалось получить регулярное выражение только для чисел, которое ^\d+$. Я пытался найти один онлайн, но уже прошел час, поэтому я решил опубликовать его здесь, на переполнение стека.

соответствует:

1 || 2 || 444 || 9000 || 012

не-матчи:

9.2 || -90

Ответы [ 7 ]

7 голосов
/ 05 марта 2012

^0*[1-9]\d*$ будет соответствовать всем числам, кроме нуля.

6 голосов
/ 05 марта 2012

Может быть, вы ищете ^[1-9]+$ шаблон. Это будет соответствовать 1245, 2253 и т. Д., Но не 1003. или 0124. Если вы хотите сопоставить 3-е число (1003), используйте также шаблон ^[1-9]\d*$.

В php вы бы использовали

preg_match('/^[1-9]\d*$/', $subject, $matches)
3 голосов
/ 05 марта 2012

Это очевидно:

[1-9]\d*

(от одной до девяти, за которыми следуют ноль или более цифр.) Это исключило бы такие вещи, как 0190, конечно.

2 голосов
/ 05 марта 2012

Я знаю, что вы попросили регулярное выражение, но вы можете рассмотреть

$opts = array(
    'options' => array(
        'min_range' => 1,
        'max_range' => PHP_INT_MAX
    )
);
$n = filter_var($input, FILTER_VALIDATE_INT, $opts);
1 голос
/ 05 марта 2012

Попробуйте это

[1-9]\d*|[0]*[1-9]\d*
1 голос
/ 05 марта 2012
/^\+?([1-9]|0.)[0-9\.]*$/

этот шаблон может вам помочь, но я думаю, что вы должны владеть языком программирования, чтобы выполнить арифметическую проверку. например в php. "$is_positive = $input > 0" да это так просто:)

0 голосов
/ 10 октября 2013

Вот тот, который позволяет от 0 до 100, но не 01

^((([0]$)|[1-9][0-9]{0,1})|100)$

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