【问题标题】:Regular expression for Invoice Number发票编号的正则表达式
【发布时间】:2016-01-06 20:10:42
【问题描述】:

我是 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这样的空格

我不知道我该怎么做。如果可以,请你帮助我。

【问题讨论】:

  • 请向我们展示您到目前为止所做的尝试。
  • 请提供一些输入->预期输出示例。
  • 很抱歉,我不能正则表达式。我是wordpress主题开发的新手。我试图理解正则表达式,但我失败了。但我的客户迫切需要它。那我该怎么办?
  • 我正在尝试 (612+(10|20|30|40|50)+(001|002|003|004|005)+0000+(01|64|55)+00)但最后 4 位数字丢失

标签: regex


【解决方案1】:
^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 :-)
【解决方案2】:
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

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多