Regex提取信用卡信息



我有一些数据,我只想从中提取卡的详细信息,即卡号、到期月/年和Cvv。我尝试了很多模式,但没有一个对它们都有效。如果一个匹配,那么另一个就不会。

测试数据:

4400634848591837Cvv: 362Expm: 04Expy: 20
4400634848591837:04 20 362
4400634848591837|04/24 362
4400634848591837 0420 362

Regex:

(d{16})[/s:|]*?(dd)[/s|]*?(d{2,4})[/s|-]*?(d{3})

这和其他人很匹配,但我还没想好如何匹配第一条线。我试过+-展望&回头看,但这对我来说从来都不起作用。所以任何帮助都会很棒。

演示:此处为

第一行16位数字之后的部分有不同的格式,值的顺序也不同。

您可以使用具有3组的交替|来获得Cvv部分的值。

请注意,您不必使用?使字符类[/s|-]*?不贪婪,因为字符不能与后面的数字交叉匹配。

b(d{16})(?:[/s:|]*(dd)[/s|]*(d{2,4})[/s|-]*(d{3})|Cvv:s*(d{3})Expm:s*(dd)Expy:s*(dd))b
  • b防止部分匹配的字边界
  • (d{16})(?:[/s:|]*(dd)[/s|]*(d{2,4})[/s|-]*(d{3})最后3行的模式
  • |
  • Cvv:s*(d{3})Expm:s*(dd)Expy:s*(dd))第一行的模式,匹配行中的文本,然后捕获3组中的数字
  • bA字边界

Regex演示

相关内容

  • 没有找到相关文章

最新更新