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也是如此,但任何时候我有一个字符串,有第二个周期,我的表达式失败。
我做错了什么
除了{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演示