#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mx)(?# This regex was created for the purposes of detecting potentially compromised credentials for the purposes of information security and not to be used for malicious purposes.)" & @CRLF & _
"(?<!\d)" & @CRLF & _
"(?# s - Short [less than 16 digits], m - Medium [16 digits], l - Long [more than 16 digits; not yet implemented])" & @CRLF & _
"(?# First four digits)" & @CRLF & _
"(?:" & @CRLF & _
" (?# Standard 16 digit numbers)" & @CRLF & _
" (?<m>" & @CRLF & _
" (?#MasterCard between 222100-272099)" & @CRLF & _
" 222[1-9]|223\d|2[3-6]\d{2}|27[01]\d|2720|" & @CRLF & _
" (?#JCB is between 3528-3589)" & @CRLF & _
" 352[89]|35[3-8]\d|" & @CRLF & _
" (?#Visa, MasterCard, Discover)" & @CRLF & _
" [4-6]\d{3}" & @CRLF & _
" )|" & @CRLF & _
" (?#American Express 15 digits | Diners Club 14 digits)" & @CRLF & _
" (?<s>(?<ax>3[47]\d{2})|(?<dc>30[0-5]\d|36\d{2}))" & @CRLF & _
")" & @CRLF & _
"(?# Rest of the card number)" & @CRLF & _
"(?<del>\D+)?(?(<m>)\d{4}(?(<del>)\k{del})\d{4}(?(<del>)\k{del})\d{4}|(?:\d{6})(?(<del>)\k{del})(?(<ax>)\d{5}|\d{4}))" & @CRLF & _
"(?#END)" & @CRLF & _
"(?!\d)"
Local $sString = "# Based on data from https://www.freeformatter.com/credit-card-number-generator-validator.html" & @CRLF & _
"" & @CRLF & _
"# Currently only works for Visa, MasterCard, Discover, AmEx, JCB, Diners Club and only 16 digits (15 for AmEx, 14 for Diners Club Int'l)" & @CRLF & _
"" & @CRLF & _
"# VISA:" & @CRLF & _
"4600259666104540" & @CRLF & _
"4556-1328-5230-3974" & @CRLF & _
"4485733989514555546" & @CRLF & _
"# MasterCard:" & @CRLF & _
"5288718104904007" & @CRLF & _
"5183-2272-0427-5165" & @CRLF & _
"2221001473307772" & @CRLF & _
"# American Express (AMEX):" & @CRLF & _
"379094106835131" & @CRLF & _
"3767-607295-33484" & @CRLF & _
"345614253532917" & @CRLF & _
"# Discover:" & @CRLF & _
"6011277600566135" & @CRLF & _
"6011-7825-5703-7196" & @CRLF & _
"6011621290066569622" & @CRLF & _
"# JCB:" & @CRLF & _
"3542928645179210" & @CRLF & _
"3538837785961400" & @CRLF & _
"3540948375054149466" & @CRLF & _
"# Diners Club - North America:" & @CRLF & _
"5440569380986811" & @CRLF & _
"5500771351399605" & @CRLF & _
"5555244536769443" & @CRLF & _
"# Diners Club - Carte Blanche:" & @CRLF & _
"30360146296936" & @CRLF & _
"30381212693491" & @CRLF & _
"30178078889506" & @CRLF & _
"# Diners Club - International:" & @CRLF & _
"36760821695498" & @CRLF & _
"36861772048826" & @CRLF & _
"36442207191455" & @CRLF & _
"# Maestro:" & @CRLF & _
"6759789245430267" & @CRLF & _
"5893000324731008" & @CRLF & _
"5038101669768864" & @CRLF & _
"# Visa Electron:" & @CRLF & _
"4026108950062250" & @CRLF & _
"4913708902962931" & @CRLF & _
"4844361267840716" & @CRLF & _
"# InstaPayment:" & @CRLF & _
"6370603085892230" & @CRLF & _
"6390038329060763" & @CRLF & _
"6395957073920994"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm