我有下面的正则表达式,它并不像我想象的那样工作。
("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2-4})?$");我尝试匹配一个字符串,该字符串以2或4位数字开头,然后是句点,然后是2位数字,然后是可选的另一个句点和2位或4位数字。
我希望33.44.4444可以工作,33.33也可以,但是任何时候我有一个有第二个句点的字符串,我的表达式就会失败。
我做错了什么?
发布于 2016-09-24 00:17:17
除了{2-4}部分之外,您的正则表达式对于您要做的事情是正确的,如果您使用{2,4},它将用于您正在寻找的2到4个字符捕获。
("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2,4})?$");希望能有所帮助。
发布于 2016-09-24 00:26:05
正如其他人指出的那样,语法{2-4}是不正确的。使用{2,4}指定出现的范围。但如果你只想要2或4(不是3),我会使用这个正则表达式:
@"^(\d{2}|\d{4})\.\d{2}(\.(\d{2}|\d{4}))?$"发布于 2016-09-24 00:10:26
您可以使用此正则表达式:
^\d{2}(?:\d{2})?\.\d{2}(?:\.\d{2}(?:\d{2})?)?$\d{2-4}将从字面上匹配{2-4}文本。
RegEx Demo
https://stackoverflow.com/questions/39665165
复制相似问题