$re = '/(?<!SQ\d{0}|\d|\d{2})(51\d{14}|52\d{14}|53\d{14}|54\d{14}|55\d{14}|36\d{12}|34\d{13}|37\d{13}|4\d{15}|4\d{12}|\d{4}(-|\s)\d{4}(-|\s)\d{4}(-|\s)\d{4}|\d{3}(-|\s)\d{3}(-|\s)\d{3}(-|\s)\d{3}(-|\s)\d{3}|\d{4}(-|\s)\d{6}(-\s)\d{5}|6\d{15})/m';
$str = '<Payment>
<PCard expiration="2061-04-00" name="Grainger AB" number="41111111111111114222222222222"/>
</Payment>
<PCard expiration="2022-04" number="4005-5511-2233-4450"/>
<Payment>
Space
<PCard expiration="2022-04" number="4005 5511 2233 4450"/>
Tab space
<PCard expiration="2022-04" number="4005 551122334450"/>
<PCard expiration="2022-04" number="4005 5511 2233 4450"/>
new line
<PCard expiration="2022-04" number="4005400540054005"/>
<PCard expiration="2022-04" number="4005 5511 2233 4450"/>
carriage return
<PCard expiration="2022-04" number="4005 5511 2233 4450"/>
</Payment>
combination of
<Payment>
<PCard expiration="2022-04" number="4005- 5511 -2233-4450"/>
</Payment>
<PCard expiration="2061-04-00" name="Grainger AB" number="4255726800010"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="@#@@@$@4255726800010"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="SQ#4255726800010"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="45a$4255726800010"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="12SQ%4255726800010"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="4255726800010@121212"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="4255726800010#SQ"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="4255726800010$a54"/>
<PCard expiration="2061-04-00" name="Grainger AB" number="4255726800010%SQ12"/>
<SupplierPartID>4222222222222</SupplierPartID>
<SupplierPartID> 4222222222222</SupplierPartID>
<SupplierPartID>SQ4222222222222</SupplierPartID>
<SupplierPartID>SQ134222222222222</SupplierPartID>
<SupplierPartAuxiliaryID>WWGSQ134256726800010</SupplierPartAuxiliaryID>
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php