首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何使用regex来捕捉这个特定的年龄范围?

我如何使用regex来捕捉这个特定的年龄范围?
EN

Stack Overflow用户
提问于 2016-07-06 09:04:50
回答 2查看 80关注 0票数 0

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

代码语言:javascript
复制
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岁以上的孩子不在组内时才使用Regex。

代码语言:javascript
复制
(?![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相匹配--这不是我想要的。

对于如何解决问题,我们会有什么建议吗?提前谢谢,我正在继续努力改正。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-06 09:18:20

你可以把它分成一组,然后重复一遍:

代码语言:javascript
复制
^(?:[^\n\d]*\b[1-7]\b[^\n\d]*)+$

regex101.com上的演示

分解后,上面写着:

代码语言:javascript
复制
^        # 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

或者就像其他人说的那样,把它放在逗号上,然后按程序进行比较。

票数 3
EN

Stack Overflow用户

发布于 2016-07-06 09:29:21

试试这个:

代码语言:javascript
复制
^([1-7]{1}(,|$))*$

refiddle.com -示例1

还可以排除带有,结尾的字符串:

代码语言:javascript
复制
^([1-7]{1}(,(?=[1-7])|$))*$

refiddle.com -示例2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38220104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档