匹配十进制数来检查它是否包含指数值有什么好的正则表达式?
感谢您的帮助。
除了包含“e-”,“e +”,“E-”或“E +”之外,我能说出匹配任何内容吗?
答案 0 :(得分:1)
这不是最短的解决方案,但要检查整数的正确性......
if( $num =~ /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/ ) {
#correct floating point
if( $num =~ /e/i ) {
#exponential
} else {
#not exponential
}
}
答案 1 :(得分:0)
虽然我并不完全清楚您要查找的是什么,但您可能需要查看CPAN提供的Regexp::Common
module,特别是Regexp::Common::number
。它可能会提供你想要的东西。
答案 2 :(得分:0)
事情是它的成本领域,并且可以 包含货币符号,括号 和其他像这样的人物
如果没有详细的规格,使用正则表达式并不是一件容易的事。在我看来,当你对输入的格式知之甚少时,正则表达式是不合适的。
OP编辑后更新:
我可以说匹配的东西 除了包含“e-”之外的任何东西, “e +”,“E-”或“E +”?
那将是例如^(?!.*[eE][+-]).*$
(使用negative lookahead),但可能比您更喜欢匹配...