1

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

4

3 回答 3

5

你的意思是在空字符串中?

你可以使用这个:

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

尽管要使其按预期工作,但您可能希望:

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

或者

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

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

于 2013-06-30T13:30:35.167 回答
1

这应该工作

^\d*(?:\d\.\d+)?$

它将匹配以下字符串:

'123'
'123.4'
'0.3'
''

它不允许字符串以小数点开头(例如.3);如果您也想允许,请使用以下命令:

^\d*(?:\.\d+)?$

如果您还希望允许以小数点结尾3.的字符串(例如),请使用以下命令:

^\d*(?:\.\d*)?$
于 2013-06-30T13:54:40.487 回答
0

你也可以这样做

^\d+([.]\d+)?$|^$
于 2013-06-30T13:58:35.240 回答