数字特殊字符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+8 或 1e6 (等同于 **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