正则表达式:将点和短划线匹配为5位数字

时间:2018-06-05 15:07:21

标签: regex regex-lookarounds

我正在尝试使用正则表达式来匹配以这种格式匹配的数字中的点和短划线: 00.000-0

我使用两步方式:首先检查数字是否采用此格式00.000-0,然后仅匹配点和短划线,我使用正则表达式模式[^\d][\.\-]

但是我试图在一个步骤中使用一个正则表达式模式,它匹配前两个数字后面的点和后面的两个数字,点数和三个数字。

首先,我在regex101.com中尝试了正面的预测,例如(?=\d\d)\.(?=\d\d\d)\-,但它没有用。然后我尝试了(?=\d\d)\.,所以至少我尝试使用点.来查看前瞻是否有效,但是它再次无效。

我在Regular-Expressions.info阅读,显然,我尝试过的前瞻格式是正确的。

我还能做些什么,它与点和短划线相匹配,只针对这种格式:00.000-0

1 个答案:

答案 0 :(得分:2)

您可以捕获捕获组()中的点和短划线。

从字符串^开头匹配2位[0-9]{2},然后捕获(\.)捕获组1中的点,匹配3位数[0-9]{3}并捕获短划线{ {1}}在捕获第2组并最终匹配行(-)

行末尾的数字[0-9]

^[0-9]{2}(\.)[0-9]{3}(-)[0-9]$

如果你的引擎支持lookbehinds,那么只匹配点和破折号的选项可以匹配点或连字符,如果在左侧和右侧是你期望的模式。

(?<=^\d{2})\.(?=\d{3}-\d$)|(?<=^\d{2}\.\d{3})-(?=\d$)