首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配数字2或4次的Regex

匹配数字2或4次的Regex
EN

Stack Overflow用户
提问于 2011-11-18 02:43:35
回答 2查看 133.3K关注 0票数 117

这是一个关于正则表达式的简单问题,但我找不到答案。

我想确定一个数字是按顺序出现,确切地说是,2,还是,四次。我可以使用什么语法?

\d{what goes here?}

我尝试了\d{2,4},但是这个表达式也接受三个数字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-18 02:46:33

这方面没有具体的语法,但是有很多方法可以做到:

代码语言:javascript
复制
(?:\d{4}|\d{2})    <-- alternation: four digits if possible, else just two
\d{2}(?:\d{2})?    <-- two digits, plus two more if possible
(?:\d{2}){1,2}     <-- two digits, times one or two

因此,例如,要匹配由一个或多个字母and后面的两个或四个数字组成的字符串,您可以写^[A-Z]+(?:\d{4}|\d{2})$;为了匹配由两位或四位数字组成的逗号分隔的列表,您可以写^((?:\d{4},|\d{2},)*(?:\d{4}|\d{2})$^(?:\d{2}(?:\d{2})?,)*\d{2}(?:\d{2})$

票数 182
EN

Stack Overflow用户

发布于 2020-04-30 07:42:39

代码语言:javascript
复制
(?<!\d)(\d{2}|\d{4})(?!\d)

这是正确的方法。公认的答案是错误的。

它将匹配3位数字(或5位)。所以在我看来这是不对的

1)在序列为2或4位之前,或在2或4位序列之后,检查没有数字。

  • (<!)语法是负查找的
  • (?!)语法是负前瞻性的。

上述方法适用于中间字符串:

如果搜索字符串周围没有内容,则可以使用字符串锚点的^$开始和结束:

代码语言:javascript
复制
^\d{4}$|^\d{2}$
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8177143

复制
相关文章

相似问题

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