首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Repeater“或”运算符

Repeater“或”运算符
EN

Stack Overflow用户
提问于 2014-01-28 19:27:00
回答 3查看 413关注 0票数 1

我希望将正则表达式与匹配,2 0-9重复(然后是其他模式)。

代码语言:javascript
运行
复制
[0-9]{2}[A-z]{4}

6 0-9重复(然后是其他模式)

代码语言:javascript
运行
复制
[0-9]{6}[A-z]{4}

以下内容过于包容:

代码语言:javascript
运行
复制
[0-9]{2,6}[A-z]{4}

问题

是否有一种方法可以指定2或6重复?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-28 19:28:48

您可以在非捕获组中这样使用或|

代码语言:javascript
运行
复制
(?:[0-9]{2}|[0-9]{6})[A-z]{4}

请注意,使用[A-z]不仅包括小写字母和大写字母,还包括[\]^_',它们位于ASCII代码点中的Za之间。如@AlanMoore在其评论中指出的那样,字母使用[A-Za-z]

票数 5
EN

Stack Overflow用户

发布于 2014-01-28 19:28:25

这应该能行

代码语言:javascript
运行
复制
(?:[0-9]{2}|[0-9]{6})[a-zA-Z]{4}

你有什么测试用例我可以用它来验证吗。

  • 12asdf -通行证
  • 123456asdf -通行证
  • 1234 fails失败

但是,如果没有将正则表达式的开始定位到单词(\b)或行边界(^),则1234asdf将以34asdf作为部分匹配。

所以不管是

代码语言:javascript
运行
复制
\b(?:[0-9]{2}|[0-9]{6})[a-zA-Z]{4}

代码语言:javascript
运行
复制
^(?:[0-9]{2}|[0-9]{6})[a-zA-Z]{4}

作为regex更改的快速运行。

  • (?: )创建一个非捕获组
  • |在0-9{2}和0-9{6}之间进行选择。
  • ^与行的开头匹配
  • $与行尾匹配
  • \b匹配单词边界
  • [a-zA-Z]正在被使用,而不是[A-z],因为它很可能是打算使用的(不管情况如何,都是alpha字符)。

您还可以将[0-9]替换为\d,它是任何数字的缩写。我认为最好的方法是纠正这个问题,而不是得到部分匹配:

代码语言:javascript
运行
复制
(?:\b|^)(?:\d{2}|\d{6})[a-zA-Z]{4}(?:\b|$)
票数 3
EN

Stack Overflow用户

发布于 2014-01-28 19:28:34

不明显,但是的:

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

https://stackoverflow.com/questions/21414915

复制
相关文章

相似问题

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