我想要一个匹配1到100之间数字的正则表达式。
这有效:
var regNumeric = /^(100|[1-9][0-9]|[1-9])$/;
但这不是
var regNumeric = /^100|[1-9][0-9]|[1-9]$/;
为什么?
代码:
var value = '121' ;
var regNumeric = /^(100|[1-9][0-9]|[1-9])$/;
if(regNumeric.test(value)){
// Match
}
答案 0 :(得分:4)
为什么会这样?
/^(100|[1-9][0-9]|[1-9])$/
由于括号,它会将开始^
和结束$
锚点应用于由OR |
分隔的每个模式..这相当于.. ^100$
或^[1-9][0-9]$
或^[1-9]$
为什么不这样做?
/^100|[1-9][0-9]|[1-9]$/
此正则表达式相当于^100
或[1-9][0-9]
或[1-9]$
(观察锚点)。因此,这符合不必要的要求,例如100abc
或hey13s
或batman5