Python 正则表达式:只要整数和小数
要求用户只能输入数字(包括整数和小数),如何用正则表达式验证用户输入?
有两种思路:
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 正则表达式:只要整数和小数的更多相关文章
- 【转】Java判断是否是整数,小数或实数的正则表达式
经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数. 网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2 ...
- python使用xlrd读取excel数据时,整数变小数的解决办法
python使用xlrd读取excel数据时,整数变小数: 解决方法: 1.有个比较简单的就是在数字和日期的单元格内容前加上一个英文的逗号即可.如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法 ...
- js 正则表达式 整数或小数
非零开头的整数或小数 /^[1-9][0-9]*([.][0-9]+)?$/ 非零开头的整数或两位小数 /^[1-9][0-9]*([.][0-9]{1,2})?$/ /^[1-9][0-9]*([. ...
- Python正则表达式汇总
判断是否是整数或小数,在网上看到一个方法: type(eval(")) == int type(eval("123.23")) == float 后来又看到<Pyt ...
- python正则表达式-re模块
目录: 一.正则函数 二.re模块调用 三.贪婪模式 四.分组 五.正则表达式修饰符 六.正则表达式模式 七.常见的正则表达式 导读: 想要使用python的正则表达式功能就需要调用re模块,re模块 ...
- 比较详细Python正则表达式操作指南(re使用)
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
- Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...
- Python正则表达式Regular Expression基本用法
资料来源:http://blog.csdn.net/whycadi/article/details/2011046 直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表 ...
- python正则表达式与re模块-02
正则表达式 正则表达式与python的关系 # 正则表达式不是Python独有的,它是一门独立的技术,所有的编程语言都可以使用正则 # 但要在python中使用正则表达式,就必须依赖于python内置 ...
随机推荐
- ecshop修改产品详情 折扣倒计时时间
文件:lefttime.js 位置:/js/lefttime.js 要求:去掉倒计时时间的 “天”数 原代码 ) { Temp = dateLeft + _day + hourZero + hour ...
- 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里
JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...
- Yii2创建多界面主题(Theme)
Yii2界面主题上的设计总体上和Yii1.x保持一致,区别在于两个地方: 1. 由于Yii2引入了独立的视图(View)类,因此界面主题(Theme)也交由视图来管理: 2. 视图文件和Web资源在目 ...
- Criteria 和 DetachedCriteria的区别与使用
Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的:而 DetachedC ...
- iOS数据库学习(1)-安装Navicat
1.下载Navicat Premium 11.0.16.dmg 已经放到百度网盘,里面有安装文件和注册机 下载链接: http://pan.baidu.com/s/1sjI64HZ 密码: 2h7q ...
- 关于 jquery 选择器的 深入理解 -1
多级选择器: 前面一个selector1, 后面通过 //空格, >, + ~, 各种筛选 选择器 + selector2 // 再次进行选择的,就叫做多级选择器 jquery的一个基本常识: ...
- GOF业务场景的设计模式-----责任链模式
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止. 首先来看一段代码: public void tes ...
- python __future__ package的几个特性
我学习python过程, 和学习其它编程知识一样, 不是先读大部头书系统学习, 而是看博客和直接实践, 慢慢将这些知识点连成线, 再扩展到面. 这个过程缺点和优点都很明显. 缺点是, 有些知识点可能因 ...
- jQuery 2.0发布,不再支持IE6/7/8
有时发现jQuery库引用的都对,javascript代码写的也没问题,可是jquery就是出现问题,额--我发现换个jquery库就没问题了,长时间不关注jquery的问题而已: 很多人都没有使用最 ...
- jQuery 请指出'$'和'$.fn'的区别?或者说出'$.fn'的用途。
---------------------------------------------------------------------------------- 我们先把jQuery看成了一个类, ...