为了账号安全,请及时绑定邮箱和手机立即绑定

十进制数正则表达式,其中十进制后的数字是可选的

十进制数正则表达式,其中十进制后的数字是可选的

精慕HU 2019-10-28 10:37:02
我需要一个验证数字的正则表达式,但不需要小数点后的数字。即。123123.123.4都是有效的123..将无效任何将不胜感激!
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

使用以下内容:


/^\d*\.?\d*$/

^ -生产线的起点;

\d* -0或更多数字;

\.?-一个可选的点(由于在正则表达式中转义,.是一个特殊字符);

\d* -0或更多数字(小数部分);

$ - 队伍的尽头。

这允许0.5小数而不是要求前导零,例如0.5


查看完整回答
反对 回复 2019-10-28
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

/\d+\.?\d*/

一个或多个数字(\d+),可选的句点(\.?),零个或多个数字(\d*)。


根据您的用法或正则表达式引擎,您可能需要添加开始/结束行锚点:


/^\d+\.?\d*$/

//img1.sycdn.imooc.com//5db654730001348902540040.jpg

查看完整回答
反对 回复 2019-10-28
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

您需要如下所示的正则表达式才能正确执行此操作:


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

使用扩展修饰符(Perl支持)的带空格的相同表达式:


/^  [+-]? ( (\d+ (\.\d*)?)  |  (\.\d+) ) $/x

或带有注释:


/^           # Beginning of string

 [+-]?       # Optional plus or minus character

 (           # Followed by either:

   (           #   Start of first option

     \d+       #   One or more digits

     (\.\d*)?  #   Optionally followed by: one decimal point and zero or more digits

   )           #   End of first option

   |           # or

   (\.\d+)     #   One decimal point followed by one or more digits

 )           # End of grouping of the OR options

 $           # End of string (i.e. no extra characters remaining)

 /x          # Extended modifier (allows whitespace & comments in regular expression)

例如,它将匹配:


123

23.45

34。

.45

-123

-273.15

-42。

-.45

+516

+9.8

+2。

+.5

并将拒绝这些非数字:


。(单小数点)

- (负小数点)

+。(加上小数点)

(空字符串)

比较简单的解决方案可能会错误地拒绝有效数字或匹配这些非数字。


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 861 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信