RegExp数量范围(1到36)

jac*_*Joe 16 javascript regex

我搜索了很多,找不到这个RegExp的解决方案(我不得不说我在Reg.表达方面不是很有经验).

我想测试1到36之间的数字,不包括0和37及以上.

我到目前为止所做的几乎是有效的(它不接受17,18,19,27,28,29)......

^[1-9]{1}$|^[1-3]{1}[0-6]{1}$|^36$;
Run Code Online (Sandbox Code Playgroud)

有谁可以帮助我吗?

har*_*rpo 26

你知道\d吗,对吗?

^([1-9]|[12]\d|3[0-6])$
Run Code Online (Sandbox Code Playgroud)

在控制台中试试这个:

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/>");
    }
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*ann 15

^[0-9]|[0-2][0-9]|3[0-6]$

这是它的细分:


[0-9] = 0-9的任何数字
| = OR
[0-2][0-9] ='1'或'2',后跟0-9的任何数字
| = OR
3[0-6] ='3',然后是0-6的任何数字.

由于@mu太短,所以使用整数比较将更容易,更有效.这是一个示例函数:

function IsInRange(number)
{
    return number > 0 && number < 37;
}
Run Code Online (Sandbox Code Playgroud)


nin*_*alj 6

尝试这个:

^[1-9]$|^[1-2][0-9]$|^3[0-6]$
Run Code Online (Sandbox Code Playgroud)

(1 到 9 之间的所有 1 位数字,所有 1x 和 2x 数字,以及 30 到 36 之间的 3x 数字)。