#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "\b(?<!\d.)(3[47]\d{2}([ -]?)(?!(\d)\3{5}|123456|234567|345678|424242|545454)\d{6}\2(?!(\d)\4{4})\d{5}|((4\d|5[1-5]|65)\d{2}|6011)([ -]?)(?!(\d)\8{3}|4242|5454|1234|3456|5678|2345|4567)\d{4}\7(?!(\d)\9{3})\d{4}\7\d{4})(\b|\s)(?!.\d\d)"
Local $sString = "ALL strings in the first section should match" & @CRLF & _
"some 4270446050075048" & @CRLF & _
"4270-4460-5007-5048" & @CRLF & _
"this:4270 4460 5007 5048." & @CRLF & _
"4270 4460 5007 5048 4/20" & @CRLF & _
"4270 4460 5007 5048 what" & @CRLF & _
"4270 4460 5007 5048" & @CRLF & _
"4270 4460 5007 5048 12/20 " & @CRLF & _
"5105105105105100" & @CRLF & _
"5200828282828210" & @CRLF & _
"" & @CRLF & _
"--- (the following should not match - test numbers)" & @CRLF & _
"5454545454545454" & @CRLF & _
"4123456789012345" & @CRLF & _
"4242424242424242" & @CRLF & _
"42704460500750a8" & @CRLF & _
"4111111111111111" & @CRLF & _
"5111111111111111" & @CRLF & _
"5555555555555555" & @CRLF & _
"3333333333333333" & @CRLF & _
"3111111111111111" & @CRLF & _
"" & @CRLF & _
"--- (the following should NOT match)" & @CRLF & _
"4270 4460 5007 5048 1234" & @CRLF & _
"4270" & @CRLF & _
"4270 4460 5007 504" & @CRLF & _
"42811293test123" & @CRLF & _
"427044605007504812345083 5095 5179 5157 5219 5187 5095 <--- FALSE POSITIVE (contains valid CC but has lots of exra digits)" & @CRLF & _
"this:4270 4460 5007 50482" & @CRLF & _
"4270 4460 5007 5048 123" & @CRLF & _
"4270 4460 5007 5048 1234" & @CRLF & _
"" & @CRLF & _
"Known False positive (test number):" & @CRLF & _
"5535 3545 5455 4444" & @CRLF & _
""
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