我如何使用正则表达式捕获某一组年龄?

时间:2016-07-05 17:08:23

标签: 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

依此类推......我正在尝试使用正则表达式来定位1-7之间的某个年龄段,但我在任何包含任何这些字符的双位数字上都会得到匹配。我的正则表达式目前如下;

/^(1)|(2)|(3)|(4)|(5)|(6)|(7)|$/g

我目前的比赛包括1,2,3,4,5,6,7 - 完美。但是,它与11,13,15和7,8,12匹配 - 不是我想要的。

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

2 个答案:

答案 0 :(得分:3)

您可以使用字词边界

\b[1-7]\b

a demo on regex101.com

正如@Quantic指出的那样,这与1-7的数字相匹配,无论它们在哪里 如果你只想让的数字在1-7之间,你需要使用锚点:

^[0-7]$

或者如果您想捕获数字:

^([0-7])$

有了这个,您需要multiline标记,同时请参阅a demo on regex101.com

答案 1 :(得分:2)

(?<!\d)[1-7](?!\d)

这会查找任何数字1-7,它的两边都没有另一个数字。 (使用负面的lookbehind / lookahead)

regex101 test