1

何能准确匹配 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

4 回答 4

4

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

于 2012-08-02T10:53:44.017 回答
1

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

于 2012-08-02T11:07:32.720 回答
1

我能想到的最短形式是这样的:

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

那是3到5对数字。

于 2012-08-02T12:20:29.510 回答
1

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

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

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

  1. 保持直观,当然可以发表评论,但越直观,出错的机会就越少;
  2. 如果您不想执行子匹配,请尽量避免使用括号,因为子匹配的结果将分组到一个数组中,这会花费额外的空间。
于 2012-08-03T06:21:34.523 回答