正则表达式Java - 检查发票号

时间:2018-02-14 22:27:31

标签: java regex

我需要构建一个正则表达式来检查发票号,如下所示: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})");

我知道......"某事"错了...

3 个答案:

答案 0 :(得分:1)

这应该有效

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

答案 1 :(得分:0)

这样的事情?

FV\/\d+\/\d+\/\d+

Preview 1

FV\/(1[0-9]{3})\/([0,1]{1}[0-9]{1})\/([0-9]{4})

Preview 2

答案 2 :(得分:0)

这应该有效(它与您给定的发票号码相符:' FV / 1024/02/208'):

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

发票编号,每年一个月都有自己的组。

Demo Regex101