在XML中查找信用卡号码?

时间:2012-01-25 20:35:35

标签: c# asp.net regex vb.net

我在XML消息中有一个信用卡号,我想使用正则表达式来查找信用卡号并加密它。所有数字都是16个字符长,并且它们并不总是在xml中的相同位置,所以基本上我认为我只需要找到一个16个字符的字符串并解密它,但我不确定如何。

示例:

<Message>
<PaymentInfo>
<CCNumber>333333333333333</CCNumber>
</PaymentInfo>
</Message>

另一种方式可能是:

<Message>
<CardInfo>
<CreditNumber>333333333333333</CreditNumber>
</CardInfo>
</Message>

这个解决方案是否有效,但它在VB中,因为原始代码是VB。

 Public Shared Function EncryptXmlLog(xml As String) As String
 'Get possible credit card numbers (13 - 16 characters)

 Dim creditCardNumbers As MatchCollection = Matches(xml, "\b\d{13,16}\b")

 For Each creditCardNumber As RegularExpressions.Match In creditCardNumbers
     xml = xml.Replace(creditCardNumber.Value, Encrypt(creditCardNumber.Value))
 Next

 Return xml
 End Function

2 个答案:

答案 0 :(得分:4)

(\d{16}|\d{15}|\d{13})将匹配任何数字集16,15或13

但是我必须知道为什么在解析之前不要只是通用XML文档。如果有多个文档,您应该有一个类型的条件解析器。

答案 1 :(得分:2)

尝试:

   var match = Regex.Match(xmlStrin, @">(\d{16})<"); 
   var number = match.Groups[1].Value;
相关问题