我想让用户输入0-20范围内的数字,他们都可以输入01和1
这就是我到目前为止所拥有的
/^[1-9]|0[1-9]|1[0-9]|2[0]$/
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
rua*_*akh 13
问题是|
优先级低于^
和$
,因此您的模式意味着^[1-9]
或 0[1-9]
或 1[0-9]
或 2[0]$
:只有一位数值受限制^
,并且仅20
受限制$
.
您可以重复^
和$
在交替的每个分支中,或者包含交替(?:...)
以创建非捕获子表达式:
/^[1-9]$|^0[1-9]$|^1[0-9]$|^20$/
/^(?:[1-9]|0[1-9]|1[0-9]|20)$/
Run Code Online (Sandbox Code Playgroud)
(我也冒昧地改变[0]
了0
.)
小智 8
怎么样
/^([0-1]?[0-9]|20)$/
Run Code Online (Sandbox Code Playgroud)
问题是20是一个特例.第二部分介绍了它.第一部分介绍其余部分.我假设perl风格的正则表达式,因为你没有指定上下文.