什么是匹配十进制数以检查它不包含指数值的好正则表达式?
谢谢你的帮助。
除了包含“e-”、“e+”、“E-”或“E+”之外,我可以只说匹配任何内容吗?
什么是匹配十进制数以检查它不包含指数值的好正则表达式?
谢谢你的帮助。
除了包含“e-”、“e+”、“E-”或“E+”之外,我可以只说匹配任何内容吗?
这不是最短的解决方案,而是检查整数的正确性......
if( $num =~ /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/ ) {
#correct floating point
if( $num =~ /e/i ) {
#exponential
} else {
#not exponential
}
}
虽然我并不完全清楚您在寻找什么,但您可能想查看Regexp::Common
模块,该模块可从 CPAN 获得,特别是在Regexp::Common::number
. 它可能会提供你所追求的。
事情是它的成本字段,可以包含货币符号、括号和其他类似的字符
如果没有详细的规范,使用正则表达式并不是一件容易的事。在我看来,当您对输入格式知之甚少时,正则表达式是不合适的。
OP编辑后更新:
除了包含“e-”、“e+”、“E-”或“E+”之外,我可以只说匹配任何内容吗?
例如^(?!.*[eE][+-]).*$
(使用负前瞻),但可能匹配的比你喜欢的要多……</p>