Regex Group Optional

本文关键字:Optional Group Regex | 更新日期: 2023-09-27 18:08:27

下面的正则表达式没有按我想象的方式工作。

("^''d{2}(?:''d{2})?''.''d{2}(''.''d{2-4})?$");

我正在尝试匹配一个字符串,该字符串以2或4个数字开头,后跟一个句号,后跟2个数字,然后可选地另一个句号和2或4个数字。

我希望33.44.4444工作,33.33也是如此,但任何时候我有一个字符串,有第二个周期,我的表达式失败。

我做错了什么

Regex Group Optional

除了{2-4}部分,你的正则表达式是正确的,如果你使用{2,4},它将为你正在寻找的2到4个字符捕获。

("^''d{2}(?:''d{2})?''.''d{2}(''.''d{2,4})?$");

希望能有所帮助。

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

@"^('d{2}|'d{4})'.'d{2}('.('d{2}|'d{4}))?$"

你在表达式第一部分中表达"两位或四位数字"的方式是正确的:

''d{2}(?:''d{2})?

第二部分做错了:

(''.''d{2-4})?

将第一部分复制到第二部分以解决问题:

("^''d{2}(?:''d{2})?''.''d{2}(''.''d{2}(?:''d{2})?)?$");

演示。

你可以使用这个正则表达式:

^'d{2}(?:'d{2})?'.'d{2}(?:'.'d{2}(?:'d{2})?)?$

'd{2-4}将逐字匹配{2-4}文本。

RegEx演示