只有正數的正則表達式是什麼? (不允許爲零)只有正整數的正則表達式是什麼? (不允許爲零)
我能得到的只有數字是^\d+$
正則表達式。我一直在尋找一個在線,但它已經一個小時了,所以我決定在Stack Overflow上發佈它。
比賽:
1 || 2 || 444 || 9000 || 012
不匹配:
9.2 || -90
只有正數的正則表達式是什麼? (不允許爲零)只有正整數的正則表達式是什麼? (不允許爲零)
我能得到的只有數字是^\d+$
正則表達式。我一直在尋找一個在線,但它已經一個小時了,所以我決定在Stack Overflow上發佈它。
比賽:
1 || 2 || 444 || 9000 || 012
不匹配:
9.2 || -90
可能是你正在尋找^[1-9]+$
模式。它將匹配1245
,2253
等,但不是1003
。或0124
。如果你想匹配第三個號碼(1003
)以及使用^[1-9]\d*$
模式。
在PHP中你會使用
preg_match('/^[1-9]\d*$/', $subject, $matches)
也謝謝您,先生,但我得到一個錯誤。在php中沒有結尾分隔符'^'。我如何解決它。先生,再次謝謝你。 – 2012-03-05 12:01:45
您沒有指定[tag:php]。在PHP中使用//作爲分隔符,所以模式將爲'/^[1-9] \ d * $ /' – 2012-03-05 12:06:20
謝謝先生。正是我在找什麼。 – 2012-03-06 01:42:47
這顯然是:
[1-9]\d*
(後跟零個或多個數字之一至九人。) 這排除0190之類的東西,當然。
^0*[1-9]\d*$
將匹配不包括零所有數字。
應該刪除'?'。 – 2012-03-05 13:17:09
@TimPietzcker,'*?'旨在成爲「[懶惰星](http://en.wikipedia.org/wiki/Regular_expression#Lazy_quantification)」,因爲'*'本身就是貪婪的。我認爲它不是必需的(或者有任何區別),只要像'0 *'這樣簡單的東西,但它仍然是有效的符號。 – ghoti 2012-03-05 15:37:16
這是有效的,但完全無用,速度較慢,因爲它會導致大量不必要的回溯。 – 2012-03-05 16:00:27
/^\+?([1-9]|0.)[0-9\.]*$/
這種模式可能會幫助你,但我認爲你必須使用你的編程語言做算術檢查。例如在PHP中。 「$is_positive = $input > 0
」是的,它是那麼容易:)
謝謝先生。是的,我只是想使用正則表達式來驗證用戶輸入,然後再將值發送到數據庫。先生,再次感謝。 – 2012-03-05 11:57:19
試試這個
[1-9]\d*|[0]*[1-9]\d*
我知道你問一個正則表達式,但你可能會考慮
$opts = array(
'options' => array(
'min_range' => 1,
'max_range' => PHP_INT_MAX
)
);
$n = filter_var($input, FILTER_VALIDATE_INT, $opts);
這裏有一個允許0到100但不是01
^((([0]$)|[1-9][0-9]{0,1})|100)$
是否有你想要做一個特別的理由n使用正則表達式進行算術比較?你知道你用霰彈槍殺死一隻蜘蛛,對吧? – ghoti 2012-03-05 11:40:56
不,我打算將它用於數量計數,我不希望用戶允許0,-1,2.3。只是積極的整數。 – 2012-03-05 11:46:52
使用'parseInt()'或一些等價物.. – 2012-03-05 11:52:02