gpt4 book ai didi

java - java中有没有可用的正则表达式来识别字符串是否是base64编码的?

转载 作者:行者123 更新时间:2023-12-01 17:48:16 28 4
gpt4 key购买 nike

我进行了多次讨论以找出如何做到这一点。但没有找到任何确切的解决方案来做到这一点。我使用以下正则表达式来检查字符串是否是 Base64 编码的

^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$  

但这并不每次都准确。我知道我可以使用一些 try catch 方法。但这对于java来说是昂贵的操作。有没有什么确切的方法可以做到这一点。我使用的是java 7。

最佳答案

我建议对此保持谨慎。有两个问题:

第一个问题是,当字符串不匹配时,您向我们展示的正则表达式可能会遇到性能问题。特别是,在匹配失败之前您会进行大量不必要的回溯。

(可以通过使用“不情愿”或“占有”量词而不是“贪婪”量词来避免回溯,但您需要了解自己在做什么。)

即便如此,除非字符串很短,否则使用 Base64.Decoder::decode 方法尝试进行 Base64 解码并捕获可能的异常可能比使用正则表达式来验证。而且您还可以获得解码数据的潜在好处。

(也许作为加速,您可以在尝试完整的 Base64 解码之前检查前 4 个和最后 4 个字符。)

<小时/>

第二个问题是(理论上)一个字符串在语法上可能是有效的 Base64,但它是由另一个“进程”生成的。因此,当你解码字符串时,你可能会得到垃圾。因此,作为验证的一部分,可能值得解码字符串并检查里面的内容。

<小时/>

I know i can use some try catch method. But that is expensive operation for java.

这都是相对的。此外,由于(我认为)Java 8 中引入了一些优化,较新的 JVM 可以更有效地抛出和处理异常。

关于java - java中有没有可用的正则表达式来识别字符串是否是base64编码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52923168/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com