我使用Perl将一些XML转换为JSON.如果XML属性是一个数字,我不想在它周围加上引号,以便JSON将其视为数字而不是字符串.如何判断Perl字符串是否为数字(仅包含0到9的数字,可能还有一个小数点)?
dlo*_*owe 21
试试Scalar::Util::looks_like_number
:
例如:
use Scalar::Util qw(looks_like_number);
if (looks_like_number($thingy)) {
print "looks like $thingy is a number...\n"
}
Run Code Online (Sandbox Code Playgroud)
cob*_*bal 19
该JSON规范提供了一个数字的格式相当明确的规则,所以下面的正则表达式应该工作:
/^-?(0|([1-9][0-9]*))(\.[0-9]+)?([eE][-+]?[0-9]+)?$/
Run Code Online (Sandbox Code Playgroud)