regex 我如何使用正则表达式来捕获这个特定的年龄范围?

wh6knrhe  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(158)

我有一组年龄数据,像下面这样;

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

等等...我尝试使用Regex来针对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的线-不是我想要的。
如有任何建议,将不胜感激。谢谢你,我会继续努力改正的。

chy5wohz

chy5wohz1#

你可以把它放在一个组中,然后重复它:

^(?:[^\n\d]*\b[1-7]\b[^\n\d]*)+$

参见a demo on regex101.com
分解,这说:

^        # 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()它的逗号和比较它的编程。

mwg9r5ms

mwg9r5ms2#

试试这个:

^([1-7]{1}(,|$))*$

您也可以排除以,结尾的字符串:

^([1-7]{1}(,(?=[1-7])|$))*$

相关问题