Regex用逗号和E/ E解析十进制数

  • 本文关键字:十进制数 Regex regex
  • 更新时间 :
  • 英文 :


我正在尝试编写regex,以便它为以下所有可能性返回true

1.2E3
12.22e32
+1.2
1,222
3,222
+3,222E23
3.2E2,333

如果逗号后面有3位数字,则逗号是有效的。我有一个正则表达式它可以很好地返回E/E和小数点

[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?

我也有下面的正则表达式,这将工作良好的逗号。

^(d?d?d(,ddd)*|d+)(.dd)?$

上面的正则表达式的第一件事,我不明白它是如何工作的。我知道^是用来否定表达式的。我理解剩下的部分但是为什么要否定它呢?

我已经做了几次尝试将两者结合起来完成我的工作。这是我的尝试(他们不工作的逗号)

"[-+]?[0-9]*(,[0-9][0-9][0-9])*\.?[0-9]+([eE][-+]?[0-9]+)?"
"/[1-9](?:\d{0,2})(?:,\d{3})*(?:\.\d*[1-9]+([eE][-+]?[0-9]+)?)?|0?\.\d*[1-9]+([eE][-+]?[0-9]+)?|0/"
有人能帮我一下吗?这似乎让我头疼

这行得通:

/^[+-]?[d]{1,3}((.[d]{1,3})?|(,[d]{3})*)([eE][d]{1,3}(,[d]{3})*)?$/

请注意,会有更优雅的正则表达式。

欢呼。

我假设您不允许没有逗号的数字。123456是无效的,除非写成123456。根据这个假设,这个正则表达式可以工作:

^[+-]?d{1,3}((.d{1,3})?|(,d{3})*)([eE]d{1,3}(,d{3})*)?$

你可以看到它是如何在debuggex上工作的详细信息

最新更新