正则表达式,如何完全匹配

时间:2012-08-02 10:50:40

标签: ruby regex

何时匹配6或8或10个数字?

"787876" =~ /^\d{6}$/ -> TRUE
"78787633" =~ /^\d{8}$/ -> TRUE
"7878733226" =~ /^\d{10}$/ -> TRUE
"7878736" =~ /^\d{6}$/ -> FALSE

为这些案例创建一个正则表达式。 更短的形式:

"787876" =~ /^\d{6}$|^\d{8}$|^\d{10}$/ 

4 个答案:

答案 0 :(得分:4)

使用此正则表达式^\d{6}(\d{2}){0,2}$

答案 1 :(得分:1)

另一种解决方案:/^\d{10}|\d{8}|\d{6}$/

答案 2 :(得分:1)

我能想到的最短形式是:

/^(\d\d){3,5}$/

这是3到5对数字。

答案 3 :(得分:1)

如果您正在处理海量数据,那么这个数据可能是一个不错的选择,因为它没有括号来运行子匹配并存储子结果。

/^\d{2}{3,5}$/

恕我直言,编写正则表达式有两个原则:

  1. 保持直观,当然你可以发表评论,但更直观,犯错误的机会就越少;
  2. 如果您不想执行子匹配,请尽量避免使用括号,因为子匹配的结果将被分组在一个数组中,这会花费额外的空格。