Gor*_*don 10 regex perl numbers perl-module
是否有一种独特的方法来确定变量值是否为数字,因为这些值也可以是科学记数法(例如,5.814e-10)?
Tim*_*Tim 23
核心模块Scalar::Util导出looks_like_number(),可以访问底层的Perl API.
looks_like_number EXPR如果perl think
EXPR是一个数字,则返回true .
Nik*_*ain 16
从perlfaq4:我如何确定标量是数字/整数/整数/浮点数?
if (/\D/) { print "has nondigits\n" }
if (/^\d+$/) { print "is a whole number\n" }
if (/^-?\d+$/) { print "is an integer\n" }
if (/^[+-]?\d+$/) { print "is a +/- integer\n" }
if (/^-?\d+\.?\d*$/) { print "is a real number\n" }
if (/^-?(?:\d+(?:\.\d*)?|\.\d+)$/) { print "is a decimal number\n" }
if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
{ print "a C float\n" }
Run Code Online (Sandbox Code Playgroud)
还有一些常用的任务模块.
Scalar::Util(与5.8一起分发)提供对perl内部函数的访问,looks_like_number以确定变量是否看起来像数字.
Data::Types 导出使用上述和其他正则表达式验证数据类型的函数.
第三,有正Regexp::Common则表达式匹配各种类型的数字.
这三个模块可从CPAN获得
还有String :: Numeric和Regexp :: Common :: number ..看起来很方便.
String :: Nummeric还有一个"与Scalar :: Util :: looks_like_number()的比较"