首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex组可选

Regex组可选
EN

Stack Overflow用户
提问于 2016-09-24 00:06:38
回答 4查看 86关注 0票数 0

我有下面的正则表达式,它并不像我想象的那样工作。

代码语言:javascript
复制
("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2-4})?$");

我尝试匹配一个字符串,该字符串以2或4位数字开头,然后是句点,然后是2位数字,然后是可选的另一个句点和2位或4位数字。

我希望33.44.4444可以工作,33.33也可以,但是任何时候我有一个有第二个句点的字符串,我的表达式就会失败。

我做错了什么?

EN

回答 4

Stack Overflow用户

发布于 2016-09-24 00:17:17

除了{2-4}部分之外,您的正则表达式对于您要做的事情是正确的,如果您使用{2,4},它将用于您正在寻找的2到4个字符捕获。

代码语言:javascript
复制
("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2,4})?$");

希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-09-24 00:26:05

正如其他人指出的那样,语法{2-4}是不正确的。使用{2,4}指定出现的范围。但如果你只想要2或4(不是3),我会使用这个正则表达式:

代码语言:javascript
复制
@"^(\d{2}|\d{4})\.\d{2}(\.(\d{2}|\d{4}))?$"
票数 1
EN

Stack Overflow用户

发布于 2016-09-24 00:10:26

您可以使用此正则表达式:

代码语言:javascript
复制
^\d{2}(?:\d{2})?\.\d{2}(?:\.\d{2}(?:\d{2})?)?$

\d{2-4}将从字面上匹配{2-4}文本。

RegEx Demo

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

https://stackoverflow.com/questions/39665165

复制
相关文章

相似问题

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