私は文字列値の大規模なリストを調べ、クレジットカードの兆候を取り除くという任務を負っています。したがって、文字列内で一致するものが見つかった場合(n =数値):
nnnn nnnn nnnn nnnn (4 x 4 numerical)
nnnnnnnnnnnnnnnn (16 numerical)
nnnn-nnnn-nnnn-nnnn (Hyphened)
nnnn nnnnnn nnnn (American express?)
nnnnnnnnnnnnnn (AX, no spaces)
nnnn-nnnnnn-nnnn (AX, Hyphened)
文字列のその部分を次のように置き換える必要があります[CARD NUMBER REMOVED]
それで、
"Client called and gave credit card details as 1234123412341234, exp 1201, and will be booked next week"
次のようになります:
"Client called and gave credit card details as `[CARD NUMBER REMOVED]`, exp 1201, and will be booked next week"
私は正規表現がこれを見つけるだろうと思っていますが、私は正規表現の経験がなく、多くのパターンがあります。そして、どうすればその部分を置き換えることができますか?
各文字を繰り返してルールチェックを行うものを書くこともできますが、それはハッキーのようです。
何か案は?
私はこれを試しています:
const string pattern = @"^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$";
const string replacement = "[CARD DETAILS REMOVED]";
var rgx = new Regex(pattern);
string cleansedText = rgx.Replace(UncleansedText, replacement);
return cleansedText;
しかし、これには一致するものが見つからないようです。
"1234610008918730 ^^9-11^^コード064^"