要求用户只能输入数字(包括整数和小数),如何用正则表达式验证用户输入?

有两种思路:

1. 给出正确格式的正则表达式,然后看输入是否合法。

2. 列出所有错误的输入,看输入是否非法。

对于思路1,想想其实有点不可靠,因为Python关于正则表达式的re模块中,只有match()、search()、findall()方法可用,而它们都是在给出的字符串中查找匹配给定模式(Pattern)的子串,找到了就返回子串,没有就返回None,并不是说整个字符串是否匹配该Pattern,按照思路1,若稍不注意,就达不到想要的效果,例如

 def isNumReg(str):
regInt='\d+'#能匹配123、123.63、123eabd、abc236等所有包含了数字的字符串
regInt2='\d+$'#能匹配123、123.63、abc236等所有以数字结尾的字符串
regInt2='^\d+$'#只能匹配1、12、123等只包含数字的字符串
regFloat='\d+\.\d+'#能12.36、efa56.63、wwe56.56abc等字符串
regFloat2='^\d+\.\d+$'#能匹配2.36、0.36、00069.63、0.0、263.25等 #以下是整数和小数正确的正则表达式
regInt='^0$|^[1-9]\d*$'#不接受09这样的为整数
regFloat='^0\.\d+$|^[1-9]\d*\.\d+$'
#接受0.00、0.360这样的为小数,不接受00.36,思路:若整数位为零,小数位可为任意整数,但小数位数至少为1位,若整数位为自然数打头,后面可添加任意多个整数,小数位至少1位 regIntOrFloat=regInt+'|'+regFloat#整数或小数 patternIntOrFloat=re.compile(regIntOrFloat)#创建pattern对象,以便后续可以复用
if patternIntOrFloat.search(str):
return True
if re.search(patternIntOrFloat,str):
return True
if re.search(regIntOrFloat,str):
return True
else:
return False if __name__=='__main__':
print isNumReg("0.360")#True

第2-6行说明开始符号(^)和结束($)的作用,

第9行、第13行说明了正则表达式中“或者”的表示方法为一条竖线('|')

第16行、第18行、第20行三者相互等价,即可以用pattern对象的search方法,也可以将pattern对象作为re.search()的参数,也可以将模式字符串作为re.search()的参数。

Python 正则表达式:只要整数和小数的更多相关文章

  1. 【转】Java判断是否是整数,小数或实数的正则表达式

    经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数. 网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2 ...

  2. python使用xlrd读取excel数据时,整数变小数的解决办法

    python使用xlrd读取excel数据时,整数变小数: 解决方法: 1.有个比较简单的就是在数字和日期的单元格内容前加上一个英文的逗号即可.如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法 ...

  3. js 正则表达式 整数或小数

    非零开头的整数或小数 /^[1-9][0-9]*([.][0-9]+)?$/ 非零开头的整数或两位小数 /^[1-9][0-9]*([.][0-9]{1,2})?$/ /^[1-9][0-9]*([. ...

  4. Python正则表达式汇总

    判断是否是整数或小数,在网上看到一个方法: type(eval(")) == int type(eval("123.23")) == float 后来又看到<Pyt ...

  5. python正则表达式-re模块

    目录: 一.正则函数 二.re模块调用 三.贪婪模式 四.分组 五.正则表达式修饰符 六.正则表达式模式 七.常见的正则表达式 导读: 想要使用python的正则表达式功能就需要调用re模块,re模块 ...

  6. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  7. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)

    http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...

  8. Python正则表达式Regular Expression基本用法

    资料来源:http://blog.csdn.net/whycadi/article/details/2011046   直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表 ...

  9. python正则表达式与re模块-02

    正则表达式 正则表达式与python的关系 # 正则表达式不是Python独有的,它是一门独立的技术,所有的编程语言都可以使用正则 # 但要在python中使用正则表达式,就必须依赖于python内置 ...

随机推荐

  1. Swiper基本上使用

    导入三个文件 jquery-1.11.1.min.js,swiper.min.js,swiper.min.css 攻略教程 http://www.swiper.com.cn/api/function/ ...

  2. Android中怎么用this

    在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚.现在让大家 ...

  3. AWK改变输入输出分隔符实例分析

    awk默认从STDIN接受数据,打印文本到STDOUT. awk的默认输入和输出分隔符: FS : 输入字段分隔符,默认空格. RS : 输入行分隔符,默认\n. OFS : 输出字段分隔符,默认空格 ...

  4. Auto generating Entity classes with xsd.exe for XML Serialization and De-Serialization

    More info here: http://blogs.msdn.com/b/yojoshi/archive/2011/05/14/xml-serialization-and-deserializa ...

  5. phpcms v9 0day

    index.php?m=member&c=index&a=login 后缀 username=phpcms&password=123456%26username%3d%2527 ...

  6. Css常用收集

    /*-------------------------------------- 圆角*/ -webkit-border-radius: 4px;  -moz-border-radius: 4px; ...

  7. 平衡二叉树(AVL)c语言实现

    参考: 二叉平衡树的插入和删除操作 平衡二叉树,AVL树之图解篇 [查找结构3]平衡二叉查找树 [AVL] #include "stdio.h" #include "st ...

  8. SQL Server2008 MERGE指令用法

    参考资料: 百度百科-MERGE

  9. Maven初级学习(一)手把手教你Maven安装

    序:学习安装Maven,在Windows和Unix系统上. 一.Windows系统安装MVN 前提正确安装JDK1.5以上的版本 1 下载最先版Mvn http://maven.opache.org/ ...

  10. SandcastleBuilder-生成帮助文档的时候报错...

    错误1: SHFB: Error BE0043: Unexpected error detected in last build step. See output above for details. ...