正则表达式-实数

本人给出的实数的正则表达式(可能不对):

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

思考过程:

整数

整数包括:0,正整数,负整数

0

0的正则:

^0$
正整数

正整数(必须为1-9开头,后面[0-9]0个或多个)的正则:

^[1-9]\d*$
负整数

负整数(正整数前加"-"):

^\-[1-9]\d*$

0,正整数和负整数合并起来就是整数:

^\-?[1-9]\d*|0$

小数

(这里说的时末尾可以为0的小数)
错误想法(经评论指出):小数就是整数加上小数点再加上1个或多个[0-9]

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

上面这个会漏掉一种情况,小数点左边部分是(-0),则不是整数,但它能组成小数。(-0)加上小数点再加上1个或多个[0-9]也是小数,比如-0.01。
想了下应该这样做,把小数分成2个部分,正小数和负小数,负小数就是正小数前加负号。
那么小数可以写成这样:

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

"|"会作用于左边的全部范围,所以要加括号。

实数

(末尾可以为0)
实数包括整数和小数(没有(.\d+)这部分就是整数,有这部分就是小数):

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

有错请帮忙指正,谢谢。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值