想要使用Regex替换掩码敏感信息*****

时间:2018-04-26 17:03:54

标签: java regex

例如:<element name="XYZ" type="string">9032905776</element>

在上面的正则表达式中,我们需要检查name属性是否具有值“XYZ”。

如果name属性包含“XYZ”,那么它应该跳过type =“String”并将9032905776屏蔽为***。

预期输出:<element name="XYZ" type="string">***</element>

final String expressionTemplate = "(?<=<element name=\"(?i:XYZ)\"[a-z?]>)(.*?)(?=</element>)";
System.out.println("Regex :"+expressionTemplate);
System.out.println("\nRequest Before    :"+dummy);
System.out.println("Request After   :"+dummy.replaceAll(expressionTemplate.toString(), "*****"));

out put:

1 个答案:

答案 0 :(得分:0)

Don't Parse HTML With Regex

问题是,无论我们写什么正则表达式,都很容易想出一个它不起作用的情况。想象一下,在type="string"内可以找到特殊字符。

相反,您应该使用真正的Java HTML解析器(例如,jsoup

但是,如果你想忽略我的警告,并使用一个可以轻易打破某些异常输入的正则表达式,那么试试这样的事情:

final String expressionTemplate = "(?<=<element name=\"XYZ\"[^>]{0,99}>)(.*?)(?=</element>)";

已知问题:

  • 如果{= 1}}出现在type =&#34; string&#34;
  • 中,则会中断 如果打开标签超过指定金额,则
  • 会中断(请参阅硬编码>
  • 它可以破解的许多其他方式...... 99 HTML评论等。