extractCardNumber static method

String? extractCardNumber(
  1. String text
)

Implementation

static String? extractCardNumber(String text) {
  // Match 13-19 digit card numbers with optional separators
  final regExp = RegExp(r'(\d[ -]*?){13,19}');
  final matches = regExp.allMatches(text);

  for (final match in matches) {
    final cleaned = match.group(0)!.replaceAll(RegExp(r'[^\d]'), '');

    // Validate card number length
    if (cleaned.length >= 13 && cleaned.length <= 19) {
      // Format as spaced groups
      return cleaned.replaceAllMapped(
        RegExp(r'.{4}'),
            (match) => '${match.group(0)} ',
      ).trim();
    }
  }
  return null;
}