我正在尝试在应用程序中为礼品卡号码模式提出正则表达式。到目前为止,我有这个,它工作正常:
(?:5049\d{12}|6219\d{12})
= 5049123456789012
我需要考虑的是由虚线或空格分隔的数字,如下所示:
5049-1234-5678-9012
5049 1234 5678 9012
我可以将这些模式链接在一起,还是需要为每种类型分开?
答案 0 :(得分:4)
最简单,最简单的正则表达式可能是:
(?:(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/
答案 1 :(得分:2)
使用(?:5049|6219)(?:[ -]?\d{4}){3}
首先,匹配两个潜在客户中的一个。然后匹配3组,每组4个数字,每组可选地以空格或短划线开头。
有关演示的信息,请参阅regex101,并且还会详细说明。
如果分隔符混合,上述正则表达式也将匹配,例如5049 1234-5678 9012
。如果您不想这样,请使用
(?:5049|6219)([ -]?)\d{4}(?:\1\d{4}){2}
regex101
这会捕获第一个分隔符(如果有),并指定以下两个组必须使用相同的分隔符。
答案 2 :(得分:0)