免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2826 | 回复: 6
打印 上一主题 下一主题

请教一个关于数字的正则判断问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-15 23:15 |只看该作者 |倒序浏览
如果要用正则来判断一个变量的值是否为数(包括科学计数法的情况,以及省略小数点前面的0的情况)


我自己写了一个可是会有误判的情况发生



  1. $aaa =~ m/^[+-]?\d*\.?\d+[Ee]?[+-]?\d*$/
复制代码



这样如果 $aaa = "3e"  ; 那么它会误判的

如果最后改成\d+ 那么就是要求至少是两位数字才可以了。。。

请问各位高手们,有没有完善的方法。。


谢过

[ 本帖最后由 hfmouse 于 2007-9-16 00:17 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-09-15 23:53 |只看该作者
原帖由 hfmouse 于 2007-9-15 23:15 发表
如果要用正则来判断一个变量的值是否为数(包括科学计数法的情况,以及省略小数点前面的0的情况)


我自己写了一个可是会有误判的情况发生



$aaa =~ m/^[+-]?\d*.?\d+[Ee]?[+-]?\d*$/


这样如果  ...




至少是2位数字用{2,}即可
建议对科学计数法的判断单独列出

稍微修改了下, 仅验证科学记数法, 试一试看满足否
/^[+-]?\d(\.\d+)?[Ee]([+-]?\d{2,})?$/

论坛徽章:
0
3 [报告]
发表于 2007-09-15 23:58 |只看该作者
啊。。ls误解我的意思了

我说如果用

  1. $aaa =~ m/^[+-]?\d*\.?\d+[Ee]?[+-]?\d+$/
复制代码


就是把最后面的* 换成+号的话,在科学计数法的时候没有问题,但是没有科学计数法的时候,就只能匹配至少两个数字的情况了



我也在考虑把科学计数法单列出来。。。谢过

[ 本帖最后由 hfmouse 于 2007-9-16 00:05 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-09-16 00:03 |只看该作者
PS..中间加括号似乎可以解决

想到几种特例情况

比如 .34


我研究研究看

再Ps..  发现 我的小数点匹配前面竟然忘记加\ 了。。。Orz...

论坛徽章:
0
5 [报告]
发表于 2007-09-16 00:36 |只看该作者
  1. $aaa =~ m/^[+-]?\d*\.?\d+([Ee][+-]?\d+)?$/
复制代码



感谢楼上高手的灵感,这个应该是没有问题的了

论坛徽章:
0
6 [报告]
发表于 2007-09-16 10:29 |只看该作者
原帖由 hfmouse 于 2007-9-16 00:36 发表
$aaa =~ m/^[+-]?\d*\.?\d+([Ee][+-]?\d+)?$/


感谢楼上高手的灵感,这个应该是没有问题的了




不能匹配e后面没有数字的情况哦
稍微修改了下:
/^[+-]?\d*\.?\d+([Ee]?[+-]?\d*)?$/

论坛徽章:
0
7 [报告]
发表于 2007-10-14 11:00 |只看该作者
[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?
刚好要用,找到一个
用过是好的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP