正則表達式只從1
回答
正則表達式可能不是一個很好的解決此問題的方法。爲什麼不把它解析爲一個整數,然後做一些簡單的「> 0 & & < 33」檢查類型?
但是,既然你問,這裏是我的回答: 爲1-32:
^(?:(?:3[0-2])|(?:[1-2]\d)|[1-9])$
(在行動:http://rubular.com/r/oVKeR28T98)
爲1-64:
^(?:(?:6[0-4])|(?:[1-5]\d)|[1-9])$
(在行動:http://rubular.com/r/Zu5Kk3zuDh)
我可能使那些r egexes比他們可能有點醜陋,但正如我所說,這幾乎肯定不是你應該尋找的答案!
正則表達式:
^([1-9]|[12][0-9]|3[012])$
將爲1-32工作,
^([1-9]|[1-5][0-9]|6[0-4])$
將爲1-64工作。
說明可以在這裏找到:
這麼說,我不認爲你應該在這種情況下使用正則表達式。一個簡單的檢查,如果num >= 1
和num <= 32
(或num <= 64
)應該工作。
當用戶輸入33值不被接受時,在用戶輸入65值不被接受的情況下類似的一秒提交。 – user3134939
@ user3134939你可以用不同的話來說話嗎?我無法真正理解你想說什麼。 –
下面是用正則表達式爲1〜32有線我的Perl的測試程序(修改不匹配爲零,感謝TimLord)
use warnings;
use strict;
my $r=qr/^([123456789]|[123][012]?|[12]\d)$/;
for my $n (1..32) {
die $n unless($n =~ /$r/);
}
for my $n (33..64) {
die $n if ($n =~ /$r/);
}
for my $n(65..99) {
die $n if ($n =~ /$r/);
}
而且這裏有一個1到64,略更好的測試
use warnings;
use strict;
my $r=qr/^([123456789]|[12345]\d|6[])$/;
for my $n(-32..0) {
die $n if ($n =~ /$r/);
}
for my $n (1..32) {
die $n unless($n =~ /$r/);
}
for my $n (33..64) {
die $n unless ($n =~ /$r/);
}
for my $n(65..1000) {
die $n if ($n =~ /$r/);
}
那個正則表達式匹配「0」! –
@TomLord所以它,淘氣我。應該已經測試過了。現在修復 – Vorsprung
- 1. 正則表達式1
- 2. 正則表達式從「1」到「15」
- 3. 正則表達式,只有
- 4. 正則表達式只
- 5. 正則表達式從正則表達式中排除1個字
- 6. 正則表達式替換「1-3」與「從1到3」格式
- 7. 正則表達式(正則表達式)
- 8. 正則表達式(正則表達式)
- 9. 正則表達式(正則表達式)
- 10. 設置從正則表達式模式到正則表達式?
- 11. Sed - 從正則表達式到(正則表達式或eof)
- 12. 從JDK使用正則表達式使用正則表達式
- 13. 正則表達式從另一個正則表達式
- 14. 正則表達式:從正則表達式
- 15. 正則表達式從JavaScript
- 16. 正則表達式從EOL
- 17. 正則表達式從CSS
- 18. 從正則表達式
- 19. 正則表達式:從URL
- 20. 正則表達式從URI
- 21. 從正則表達式
- 22. 正則表達式從MySQL
- 23. 正則表達式從JSON
- 24. PHP - 正則表達式從
- 25. 正則表達式:從URL
- 26. 正則表達式從行
- 27. 正則表達式從URL
- 28. 從正則表達式
- 29. 從正則表達式
- 30. 正則表達式從URL
當然1到64包括1到32,所以我不明白你爲什麼單獨提到它們。請解釋你的意思! – Vorsprung
正則表達式不是範圍驗證的理想工具,您最好將其解析爲帶有內置函數的int。什麼情況會使你得到正則表達式? – 16807
嗨Vorspring,我們創建了兩個字段,我們希望檢查值只有32和64。 – user3134939