如何使用正则表达式捕获这个特定的年龄组?

时间:2016-07-06 11:26:59

标签: regex

我有一组年龄数据,如下所示;

1
2
3
4
5
6
7
8
9
10
1,1
1,2
1,3
2,12
11,13,15
7,8,12
12,15
14,16,17
15,6
13,11,10,2

等等...我正在尝试使用正则表达式来定位一个“混合”的儿童年龄段。该逻辑至少需要2个孩子的组合(因此需要其中一个带逗号的行),其中至少一个年龄小于10(min为1),并且至少一个年龄等于或大于10(最大17)。

我从上面得到的预期结果是返回以下这些行,而不是其他任何内容;

2,12
7,8,12
15,6
13,11,10,2

如何解决任何建议将不胜感激?在此先感谢,我将继续尝试纠正。

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式来满足您的要求:

^(?=.*\b[1-9]\b)(?=.*\b1[0-7]\b)[0-9]+(?:,[0-9]+)+$

RegEx Demo

  • 1-910-17
  • 之间有两个前瞻用于断言2个数字1
  • ([1-9])匹配应在19之间的数字
  • 1[0-7]匹配应在1017之间的数字
  • 正则表达式中的
  • [0-9]+(?:,[0-9]+)+用于匹配中间的一个或多个逗号分隔数字。

答案 1 :(得分:0)

你可以用

完成
\b\d,1[0-7]\b

如果年龄总是排序(从最小到最老)。

如果不允许年龄为0岁,请改为

\b[1-9],1[0-7]\b

它检查一个数字后跟一个逗号,一个后跟一个0-7范围内的单个数字。

See it here at regex101