【问题标题】:Regex Giftcard number pattern正则表达式礼品卡号码模式
【发布时间】:2018-03-29 23:04:16
【问题描述】:

我正在尝试为应用程序中的礼品卡号码模式提出一个正则表达式。到目前为止我有这个,它工作正常:

(?:5049\d{12}|6219\d{12}) = 5049123456789012

我需要考虑的是由虚线或空格分隔的数字,如下所示:

5049-1234-5678-9012

5049 1234 5678 9012

我可以将这些模式链接在一起,还是需要为每种类型分开?

【问题讨论】:

    标签: regex


    【解决方案1】:

    最简单最简单的正则表达式可能是:

    (?:(5049|6219)([ -]?\d{4}){3})
    
    Explanation:
    (5049|6219) - Will check for the '5049' or '6219' start
    (x){3} - Will repeat the (x) 3 times
    [ -]? - Will look for " " or "-", ? accepts it once or 0 times
    \d{4} - Will look for a digit 4 times
    

    更详细的解释和示例可以在这里找到:https://regex101.com/r/A46GJp/1/

    【讨论】:

      【解决方案2】:

      使用(?:5049|6219)(?:[ -]?\d{4}){3}

      首先,匹配两条线索中的一条。然后匹配 3 组,每组 4 位,每组可选地以空格或破折号开头。

      演示见regex101,也有更详细的解释。

      如果混合了分隔符,上述正则表达式也将匹配,例如5049 1234-5678 9012。如果你不想这样,请使用

      (?:5049|6219)([ -]?)\d{4}(?:\1\d{4}){2} regex101

      这将捕获第一个分隔符(如果有),并指定以下 2 个组必须使用相同的分隔符。

      【讨论】:

        【解决方案3】:

        试试这个:

        (?:(504|621)9(\d{12}|(\-\d{4}){3}|(\s\d{4}){3}))
        

        https://regex101.com/r/SyjaT5/6

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-12
          • 2012-03-08
          • 2012-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-23
          相关资源
          最近更新 更多