我正在尝试编写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上工作的详细信息