我需要构建一个正则表达式来检查发票号,如下所示:FV/1024/02/2018


FV-始终使用FV没什么不同
1024-下一个发票编号-始终以“ 1”开头,接下来的三个数字是不同的[0-9]
02-月-始终为1-12
2018-一年


我有:

Pattern pattern = Pattern.compile("([FV])/((1)[0-9]{3})/([0,1]{1}[0-9]{1})/([0-9]{4})");


而且我知道...“某事”错了...

最佳答案

这应该工作

FV\/1\d{3}\/(:?(:?0[1-9])|1[0-2])\/\d{4}


Demo


FV\/匹配第一个常量部分(FV/)的字符串
1\d{3}\/是发票编号-以1开头,后跟3位数字
(:?(:?0[1-9])|1[0-2])是月份号


(:?0[1-9])0109
1[1-2]1012

\/\d{4}是斜杠年份,例如/2018

09-27 06:59