数字特殊字符JSON字符串校验com.alibaba.fastjson

数字/特殊字符JSON字符串校验com.alibaba.fastjson

以下特殊字符都会被JSONValidator.from判定为合格的 JSON格式字符

名称 正则 示例 判定
有理数/无理数 ^[+-]?\d+(\.\d+)?$ -999.88 NumberUtils
科学计数法数 ^[+=]?\d+(\.\d+)?[eE][-+]?\d+$ +5.67E-8-5.67e+81e6 (等同于 **1000000**)1e-5(等同于 **0.00001**) NumberUtils
"null" 字符串 ^"null"$ "null" StrUtil
JSONValidator.from("-999.88").validate();  //true
JSONValidator.from("+5.67E-8").validate(); //true
JSONValidator.from("null").validate();     //true

判定数字的话,可以使用 org.apache.commons.lang3.math.NumberUtils#isCreatable

/**
*检查字符串是否是有效的 Java 数字。
*有效数字包括用0x或0X限定符标记的十六进制数、八进制数、科学计数法和用类型限定符标记的数字(例如 123L)。
*以零开头的非十六进制字符串被视为八进制值。因此字符串09将返回false ,因为9不是有效的八进制值。但是,以0.开头的数字被视为十进制。
*null和空String将返回false 。
*注意, createNumber(String)应该为每个结果为true输入返回一个数字。
*参数:
*str – 要检查的String
*返回:
*如果字符串是格式正确的数字,则为true
*自从:
*3.5 Java 1.6 中除整数外,代码支持数字上的“+”后缀
*/
NumberUtils.isCreatable("-999.88");  //true
NumberUtils.isCreatable("+5.67E-8"); //true

判定"null"字符串 cn.hutool.core.util.StrUtil#isBlankOrUndefined

/**
 * 检查字符串是否为null、空白串、“null”、“undefined”
 * 
 * @param str 被检查的字符串
 * @return 是否为null、空白串、“null”、“undefined”
 * @since 4.0.10
 */
StrUtil.isBlankOrUndefined("null"); //true
posted @ 2024-06-20 13:35  Journey&Flower  阅读(10)  评论(0编辑  收藏  举报