3

我正在使用http://gskinner.com/RegExr/来测试我的正则表达式:[+-]?\d+\.?\d*(e[+-]?\d+)?。它应该匹配浮点数。目前它不匹配.x,但我想让它做到这一点。

我尝试将其更改为[+-]?\d*\.?\d*(e[+-]?\d+)?(更改+*),但这是一个错误。这里出了什么问题?

更新:是因为一切都是可选的吗?

4

3 回答 3

1

更改\.?\.,它将起作用:

[+-]?\d*\.\d*(e[+-]?\d+)?

我想这一点不是可选的。

但是,如果您想这样做,请用 更好地描述它[.]+

正如@h2ooooooo 提到的,这似乎是正则表达式的 as3 实现中的一个错误。

\d+\.?\d+ // works
\d*\.?\d+ // works
\d*\.?\d* // does not work
\d?\.?\d? // does not work
于 2013-09-28T21:33:50.883 回答
0

是的,您修改后的正则表达式匹配空字符串,也就是说,它匹配输入字符串的任何位置。

试试这个:

[+-]?(?:\d+|\d*\.\d+)(?:e[+-]?\d+)?

它使得子组中有两个不同的分支;可以是整数(无小数点,位于 的左侧|),也可以是带有可选前缀但强制点的浮点数,点后有 1 个强制数字。

于 2013-09-28T22:08:41.777 回答
0

这个将要 应该允许匹配诸如1.0, -.2,1e7等的东西。

^[+-]?(([0-9]+)|([0-9]*\.[0-9]+|[0-9]+\.[0-9]*)|(([0-9]+|([0-9]*\.[0-9]+|[0-9]+\.[0-9]*))[eE][+-]?[0-9]+))$
于 2013-09-28T21:55:23.377 回答