这些正则表达式的区别?

时间:2015-06-01 10:58:13

标签: javascript regex

我想要一个匹配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 
  }

1 个答案:

答案 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]$(观察锚点)。因此,这符合不必要的要求,例如100abchey13sbatman5