我是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
我无法弄清楚我怎么能这样做。如果可以,请你帮助我。
答案 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位数字$
是字符串结尾的锚点答案 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。