我怎样才能用Regex实现这个目标?

Xai*_*oft 0 c# regex

我有以下xml片段:

<CreditCard 
   name="John Doe" 
   ccnum="1234123412341234" 
   ccv="239" 
   exp="03/13">
</CreditCard>


<CreditCard>
   <name>John Doe</name>
   <ccnum>1234123412341234</ccnum>
   <ccv>239</ccv>
   <exp>03/13</exp>
</CreditCard>
Run Code Online (Sandbox Code Playgroud)

上面的代码片段只是xml可以存储信用卡数据的众多方式中的两种,所以这是我的问题,我需要扫描xml字符串并找到我已经完成的16位数字,但之后我需要确定安全代码的位置,在这种情况下我将假设的ccv将是CreditCard元素中的3-4位数字或类似的东西然后加密.我的初步想法是找到16位数字然后返回,直到我找到第一个开始元素并假设这是信用卡数据的开始然后前进并搜索3-4位数字,但我是不确定如何去做?

让我假设我坚持使用正则表达式:

首先我找到13 - 16位数字,所以在第一个例子中,我发现:

1234123412341234,现在我想在那里扫描一个3-4位数字,这就是我被困住的地方.

码:

//This encrypts 13-16 digit numbers, now I just need to encrypt the 3-4 digit security 
//code
foreach (Match cc in Regex.Matches(xml, @"\b\d{13,16}\b"))
 {

      Console.WriteLine(xml);
      Console.WriteLine(cc);
      xml = xml.Replace(cc.Value, "ENCRYPTED");
      Console.WriteLine(xml);

  }
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 6

不是小马了......

有没有特别的原因你不能只使用XML?如果没有,那么你可以使用XML:

XmlDocument doc = new XmlDocument();
doc.LoadXml(myString);

foreach(XmlElement card in doc.GetElementsByTagName("CreditCard")) {
    // Use card.GetElementsByTagName("name")[0].InnerText, etc.
}
Run Code Online (Sandbox Code Playgroud)