JAVA判断字符串是否为base64编码
2018-10-25 11:18
183 查看
百度一圈,不难发现base64编码之后的字符串具有哪些特点:
- 字符串只可能包含A-Z,a-z,0-9,+,/,=字符
- 字符串长度是4的倍数
- 只会出现在字符串最后,可能没有或者一个等号或者两个等号
String inputStr="Test Base64 string"; String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$"; Boolean isLegal = inputStr.matches(base64Pattern); if (!isLegal) { System.out.println("输入的不是Base64编码的字符串。"); }
上述表达中“base64Pattern ”为正则表达的匹配模板。
“^”:表示正则匹配的开始;
“[A-Za-z0-9+/]”:匹配“A-Z,a-z,0-9,+,/,=”等字符;
“{4}”:字符重复出现次数为4的配属
“([A-Za-z0-9+/]{4})”:表示等字符出现次数或字符串长度是4的倍数;
“*”:表示后续出现的字符串重复出现零次或更多次;
“|”:表示或的关系
“([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)”:表示同时匹配三种表达式,出现一次即为匹配成功;
“$”:表示匹配结束;
上述直接匹配字符串的方式判断是否为base64编码的方式,图片类型的Base64编码串可能会判断失败。
因为jpg等格式的图片采用Base64编码结果一般形式为:
// base64格式的图片 String base64Image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ......."
会出现表示字符串信息的字符串头。因而,判断字符串是否为base64格式的图片时,应去掉字符串头再进行匹配。
String inputStr="Test Base64 Image"; String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$"; if (inputStr.lastIndexOf(",") != -1) { inputStr= inputStr.substring(inputStr.lastIndexOf(",") + 1); } Boolean isLegal = inputStr.matches(base64Pattern); if (!isLegal) { System.out.println("输入的不是Base64编码的字符串。"); }
同样的,判断字符串是否为base64格式的图片时,可以使用以下方法:
String inputStr="Test Base64 Image"; if (inputStr.lastIndexOf(",") != -1) { inputStr= inputStr.substring(inputStr.lastIndexOf(",") + 1); } try { BufferedImage bufImg = ImageIO.read(new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(base64Str))); if (null == bufImg) { System.out.println("输入的不是Base64编码的图片。"); } } catch (IOException e) { e.printStackTrace(); }
=================================================================
参考博文1:https://blog.csdn.net/u011159417/article/details/80967902
参考博文2:https://www.geek-share.com/detail/2668842924.html
相关文章推荐
- php判断字符串是否base64编码
- 校验出生日期,校验身份证格式,校验会员账户:9开头数字,校验手机号码是否合法,判断字符串中的url是否都是图片格式字符串,通过图片url读取图片并将图片转换成base64编码
- Java判断字符串中是否包含中文方法
- Java中判断字符串是否为数字
- Java中判断字符串是否为数字的五种方法
- Java循环判断数组中是否包含字符串
- [每日练习]面试题--判断某个字符串是否为另一个字符串旋转得到的(Java)
- JAVA中判断字符串是否为数字的方法
- java中如何判断一个字符串数组中是否包含一个字符
- java中判断字符串是否为数字的三种方法
- java 字符串判断是否为空
- java判断一个字符串对象是否在一个集合里面
- java判断字符串是否为空的方法总结
- java中判断字符串是否为数字的方法 StringUtil包函数
- java判断一个字符串是否是json格式
- java判断字符串是否为数字
- Java中判断字符串是否为数字的五种方法
- java采用3种方式判断用户输入的字符串是否为回文
- PHP 判断字符串是否符合指定格式编码-mb_check_encoding
- Java 判断一个字符串是否为合法日期