我有一组年龄数据,如下所示;
1
2
3
4
5
6
7
8
9
10
1,1
1,2
1,3
2,12
11,13,15
7,8,12
等等......我正在尝试使用正则表达式来定位1-7之间的某个年龄段,但仅限于8岁以下的孩子不在该组中。
(?![8-9]|1[0-7]$)\b[1-7]\b
我目前的比赛包括所有单数字线1,2,3,4,5,6,7 - 完美。它匹配1,2和1,3例如 - 完美。然而,它也匹配2,12和7,8,12的线 - 不是我想要的。
如何解决任何建议将不胜感激?在此先感谢,我将继续尝试纠正。
答案 0 :(得分:3)
你可以将它放在一个组中并重复它:
^(?:[^\n\d]*\b[1-7]\b[^\n\d]*)+$
<小时/>
细分,这说:
^ # anchor it to the beginning
(?: # a non capturing group
[^\n\d]* # not a number or newline
\b # a word boundary
[1-7] # a digit from 1-7
\b # another boundary
[^\n\d]* # same as above
)+ # repeat the whole construct at least once
$ # THE END
<小时/> 或者正如其他人所说,
explode()
它在逗号上并以编程方式进行比较。
答案 1 :(得分:2)
试试这个:
^([1-7]{1}(,|$))*$
您还可以排除,
结尾的字符串:
^([1-7]{1}(,(?=[1-7])|$))*$