Regex 双精度值或空字符串的正则表达式:^[0-9]\d*(\.\d+;)$

Regex 双精度值或空字符串的正则表达式:^[0-9]\d*(\.\d+;)$,regex,Regex,为了验证文本是否为双精度值,我使用^[0-9]\d*(\.\d+)?$。但是,我应该使用什么正则表达式才能使空字符串或双精度值匹配?您是指空字符串中的正则表达式吗 你可以用这个: ^([0-9]\d*(.\d+)?|)$ ^\d*(?:\.\d+)?$ ^\d*(?:\.\d*)?$ 尽管要使其按预期工作,您可能需要: ^([0-9]+(\.[0-9]+)?|)$ 或 注意,我在那里放了一个or运算符,因为后面没有任何内容,所以它将匹配一个空行。您的意思是在空字符串中 你可以用这个: ^

为了验证文本是否为双精度值,我使用
^[0-9]\d*(\.\d+)?$
。但是,我应该使用什么正则表达式才能使空字符串或双精度值匹配?

您是指空字符串中的正则表达式吗

你可以用这个:

^([0-9]\d*(.\d+)?|)$
^\d*(?:\.\d+)?$
^\d*(?:\.\d*)?$
尽管要使其按预期工作,您可能需要:

^([0-9]+(\.[0-9]+)?|)$


注意,我在那里放了一个or运算符
,因为后面没有任何内容,所以它将匹配一个空行。

您的意思是在空字符串中

你可以用这个:

^([0-9]\d*(.\d+)?|)$
^\d*(?:\.\d+)?$
^\d*(?:\.\d*)?$
尽管要使其按预期工作,您可能需要:

^([0-9]+(\.[0-9]+)?|)$

请注意,我在那里放了一个or运算符
|
,因为后面没有任何内容,所以它将匹配一个空行。

这应该可以工作

^\d*(?:\d\.\d+)?$
它将匹配如下字符串:

'123'
'123.4'
'0.3'
''
它不允许字符串以小数点开头(例如
.3
);如果您也希望这样做,请使用以下选项:

^([0-9]\d*(.\d+)?|)$
^\d*(?:\.\d+)?$
^\d*(?:\.\d*)?$
如果您还希望允许以小数点结尾的字符串(例如
3.
),请使用以下命令:

^([0-9]\d*(.\d+)?|)$
^\d*(?:\.\d+)?$
^\d*(?:\.\d*)?$
这应该行得通

^\d*(?:\d\.\d+)?$
它将匹配如下字符串:

'123'
'123.4'
'0.3'
''
它不允许字符串以小数点开头(例如
.3
);如果您也希望这样做,请使用以下选项:

^([0-9]\d*(.\d+)?|)$
^\d*(?:\.\d+)?$
^\d*(?:\.\d*)?$
如果您还希望允许以小数点结尾的字符串(例如
3.
),请使用以下命令:

^([0-9]\d*(.\d+)?|)$
^\d*(?:\.\d+)?$
^\d*(?:\.\d*)?$
你也可以这样做

^\d+([.]\d+)?$|^$
你也可以这样做

^\d+([.]\d+)?$|^$

什么是“双值”?
-1.0e-123
也是有效的
双值
是否应该匹配?什么是“双值”?
-1.0e-123
也是有效的
双值
是否应该匹配?您还可以使用首字母
\d*
。那么,您也可以将.1作为一个值进行匹配,我想这取决于您的用例。您不需要正则表达式中的最后一个
|
。@owlstead确实可以,但我决定不使用,因为OP似乎至少匹配一个数字(如果有),与
[0-9]\d*
匹配。但是是的,有了
\d*
,我就不需要管道了,除非像
.1
这样的东西也是无效的!请注意,
(.\d+)
是因为OP没有将正则表达式放在backticks中,所以
\.
被解析为
@doubleDown哦,对了,这就可以解释了。我当时没有想到^^ ^;谢谢您也可以使用首字母
\d*
。那么,您也可以将.1作为一个值进行匹配,我想这取决于您的用例。您不需要正则表达式中的最后一个
|
。@owlstead确实可以,但我决定不使用,因为OP似乎至少匹配一个数字(如果有),与
[0-9]\d*
匹配。但是是的,有了
\d*
,我就不需要管道了,除非像
.1
这样的东西也是无效的!请注意,
(.\d+)
是因为OP没有将正则表达式放在backticks中,所以
\.
被解析为
@doubleDown哦,对了,这就可以解释了。我当时没有想到^^ ^;谢谢