0

什么是匹配十进制数以检查它不包含指数值的好正则表达式?

谢谢你的帮助。

除了包含“e-”、“e+”、“E-”或“E+”之外,我可以只说匹配任何内容吗?

4

3 回答 3

1

这不是最短的解决方案,而是检查整数的正确性......

if( $num =~ /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/ ) {
    #correct floating point
    if( $num =~ /e/i ) {
        #exponential
    } else {
        #not exponential
    }
}
于 2011-05-10T21:26:07.533 回答
0

虽然我并不完全清楚您在寻找什么,但您可能想查看Regexp::Common模块,该模块可从 CPAN 获得,特别是在Regexp::Common::number. 它可能会提供你所追求的。

于 2011-05-10T21:36:49.440 回答
0

事情是它的成本字段,可以包含货币符号、括号和其他类似的字符

如果没有详细的规范,使用正则表达式并不是一件容易的事。在我看来,当您对输入格式知之甚少时,正则表达式是不合适的。


OP编辑后更新:

除了包含“e-”、“e+”、“E-”或“E+”之外,我可以只说匹配任何内容吗?

例如^(?!.*[eE][+-]).*$(使用负前瞻),但可能匹配的比你喜欢的要多……</p>

于 2011-05-10T21:47:05.807 回答