Class: PiiScrubber::Detectors::CreditCard
- Defined in:
- lib/pii_scrubber/detectors/credit_card.rb
Constant Summary collapse
- CREDIT_CARD_REGEX =
Matches 13-19 digit card numbers separated by optional dashes or spaces
/\b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\d{3})\d{11})\b/- GENERIC_CARD_REGEX =
/\b(?:\d[ -]*?){13,19}\b/
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize ⇒ CreditCard
constructor
A new instance of CreditCard.
- #patterns ⇒ Object
- #replace(match, strategy: :placeholder, mask_char: "*", hmac_salt: nil) ⇒ Object
- #valid?(match) ⇒ Boolean
Constructor Details
#initialize ⇒ CreditCard
Returns a new instance of CreditCard.
12 13 14 |
# File 'lib/pii_scrubber/detectors/credit_card.rb', line 12 def initialize super(name: :credit_card) end |
Instance Method Details
#patterns ⇒ Object
16 17 18 |
# File 'lib/pii_scrubber/detectors/credit_card.rb', line 16 def patterns [CREDIT_CARD_REGEX, GENERIC_CARD_REGEX] end |
#replace(match, strategy: :placeholder, mask_char: "*", hmac_salt: nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/pii_scrubber/detectors/credit_card.rb', line 27 def replace(match, strategy: :placeholder, mask_char: "*", hmac_salt: nil) return super unless strategy == :mask digits = match.scan(/\d/) return super if digits.size < 4 # Show last 4 digits last_four = digits.last(4).join "#{mask_char * 12}#{last_four}" end |
#valid?(match) ⇒ Boolean
20 21 22 23 24 25 |
# File 'lib/pii_scrubber/detectors/credit_card.rb', line 20 def valid?(match) digits = match.scan(/\d/).map(&:to_i) return false unless digits.size >= 13 && digits.size <= 19 luhn_valid?(digits) end |