发票编号的正则表达式

时间:2016-01-06 20:10:43

标签: regex

我是Stackoverflow的新手,我需要您的帮助来匹配付款发票编号。这样用户就无法输入错误的发票号。它应与612(fixed) 10/20/30/40/50(only one from 5 of them) 001-064(one at a time) 0000(fixed) 01-64(one at a time) 00(fixed) and then 0001-9999(allowed)

等发票模式匹配

如果我向您显示一个发票编号,那么这个612 30 005 0000 55 00 1234就像这样61230005000055001234

我无法弄清楚我怎么能这样做。如果可以,请你帮助我。

2 个答案:

答案 0 :(得分:3)

^612\s?[1-5]0\s?0(?:[0-5]\d|6[0-4])\s?0000\s?(?:[0-5]\d|6[0-4])\s?00\s?\d{4}$

应该为你做的工作,假设空格是可选的,但是在固定位置,只有单个空格。

  • ^是字符串开头的锚点
  • 612\s?字面匹配612,后跟可选空格
  • [1-5]0\s?匹配1/2/3/4/5,后跟0和可选空格
  • 0([0-5]\d|6[0-4])\s?表示0后跟0-5和任何数字或6 和0-4,后跟一个可选空格
  • 0000\s?按字面意思匹配0000,然后是视频空间
  • ([0-5]\d|6[0-4])\s?是0-5和任何数字或6和0-4,后跟可选空格
  • 00\s?按字面匹配00,后跟可选空格
  • \d{4}表示任意4位数字
  • $是字符串结尾的锚点

https://regex101.com/r/iU5jY5/3

答案 1 :(得分:1)

612[1-5]00(?:[0-5][0-9]|6[0-4])0000(?:0[0-9]|[1-5][0-9]|6[0-4])00[0-9]{4}

请参阅a demo here