我搜索了很多,找不到這個RegExp的解決方案(我不得不說我對Reg.Expressions不是很有經驗)。RegExp數字範圍(1到36)
我想測試一個介於1和36之間的數字,不包括0和37以上。
到目前爲止,我已經得到了什麼,幾乎工程(不接受17,18,19,27,28,29)...
^[1-9]{1}$|^[1-3]{1}[0-6]{1}$|^36$;
有人可以幫我嗎?
我搜索了很多,找不到這個RegExp的解決方案(我不得不說我對Reg.Expressions不是很有經驗)。RegExp數字範圍(1到36)
我想測試一個介於1和36之間的數字,不包括0和37以上。
到目前爲止,我已經得到了什麼,幾乎工程(不接受17,18,19,27,28,29)...
^[1-9]{1}$|^[1-3]{1}[0-6]{1}$|^36$;
有人可以幫我嗎?
你知道\d
,對不對?
^([1-9]|[12]\d|3[0-6])$
在控制檯試試這個:
function test() {
for(var i = 0; i < 100; i++) {
if (/^([1-9]|[12]\d|3[0-6])$/.test(i.toString()) != (i >= 1 && i <=36)) {
document.write(i + "fail");
}
else
document.write(i + "pass");
document.write("<br/>");
}
}
嘗試這種情況:
^[1-9]$|^[1-2][0-9]$|^3[0-6]$
(所有1位1和9,所有1x和2x數字之間3X數從30至36的數字,和)。
我看到的邏輯,它是如此的「簡單」我需要更多的測試,但這個工程可愛,謝謝 – jackJoe 2011-04-27 22:57:38
^[0-9]|[0-2][0-9]|3[0-6]$
下面是它的一個細分:
[0-9]
= 0-9
|
任何位數= OR
[0-2][0-9]
= '1' 或'2',後面跟0-9的任意數字
|
=或
3[0-6]
='3',然後是0-6中的任何數字。
由於@mu太短說,使用整數比較會更容易,更高效。下面是一個例子功能:
function IsInRange(number)
{
return number > 0 && number < 37;
}
thnaks的解釋,我真的需要它是一個正則表達式,否則我會用簡單的舊javascript解決它:) – jackJoe 2011-04-27 23:44:33
我不知道爲什麼所有的答案,這樣的重複之前的每個條件後加入邊界(^
和$
)的錯誤。但是,你只需要做:
^[1-9]|[1-2][0-9]|3[0-6]$
這是一個要求:( – jackJoe 2011-04-27 22:56:05