理解基本的Javascript正则表达式

时间:2013-09-27 10:03:40

标签: javascript regex

在Javascript中,为什么

/^(\d{1}){3}$/.exec(123)

返回["123", "3"],但

/^(\d{1})$/.exec(123)

返回null而不是["3"]

另外,当31后面的数字时,为什么第一个表达式会返回^

1 个答案:

答案 0 :(得分:4)

第一种情况

注意\d{1}仅相当于\d

/^(\d{1}){3}$/

可以简化为

/^(\d){3}$/

表示

  • 字符串的开头
  • 匹配三位数字符串
  • 字符串的结尾

\d周围的括号定义了一个捕获组。正如herehere所解释的,当您重复捕获组时,通常的实现仅保留最后一次捕获。

这就是最终结果

的原因
[
  "123", // the whole matched string
  "3",   // the last captured group
]

第二种情况

/^(\d{1})$/

可以再次简化为

/^(\d)$/

表示

  • 字符串的开头
  • 匹配一位数字
  • 字符串的结尾

123设为三位数字符串,它与正则表达式不匹配,因此结果为null