我正在尝试编写正则表达式,以便它为所有以下可能性返回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(,\d\d\d)*|\d+)(\.\d\d)?$
以上正则表达式的第一件事,我不明白它是如何工作的。我知道^用于否定表达式。我理解剩下的部分,但为什么要否定呢?
我已经尝试将两者结合起来完成我的工作。 以下是我的尝试(它们不适用于逗号)
"[-+]?[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/"
有人可以帮我解决这个问题。这似乎让我很头疼
答案 0 :(得分:1)
这有效:
/^[+-]?[\d]{1,3}((\.[\d]{1,3})?|(,[\d]{3})*)([eE][\d]{1,3}(,[\d]{3})*)?$/
请注意,这将有更优雅的正则表达式。
干杯。
答案 1 :(得分:1)
我假设你不允许没有逗号的数字。这是123456无效,除非它写成123,456。鉴于这种假设,这个正则表达式将起作用:
^[+-]?\d{1,3}((\.\d{1,3})?|(,\d{3})*)([eE]\d{1,3}(,\d{3})*)?$
您可以在debuggex上查看其工作原理的详细信息。