通过完善邮箱匹配来一步步学习正则表达

首先,在学习之前先确定一下邮箱的格式,邮箱的一般格式为[email protected],其中xxx可为数字、字母、下划线_,中划线-,点号.,加号+等组成。

在看具体代码之前需要先了解一些基础知识

# []表示匹配字符集中的任意一个字符
# \w 表示匹配任何字母数字字符
# \s表示任何空格字符
# \d表示任何十进制数字
# +表示匹配1次或多次前面出现的正则表达
# *表示匹配0次或多次前面出现的正则表达
# (?:)表示一个匹配不用保存的分组

1、匹配最简单的邮箱格式,如[email protected]

def test11():
    strs="liutian@126.com."
    reg="\[email protected]\w+.\w+"
    print re.match(reg,strs).group()
"\[email protected]\w+.\w+"的意思是:1次或多次的任何字母数字@1次或多次的字母数字.一次或多次的字母数字。如此匹配不完善,经常会有的邮箱会有多个后缀。2、完善匹配,如[email protected]
def test12():
    strs="[email protected]126.mygene.com
" reg="\[email protected](\w+.)+\w+" print re.match(reg,strs).group()
"\[email protected](\w+.)+\w+",@后边的“(\w+.)+”的意思是将1个或多个任意字母或数字作为一个分组,1次或多次这个分组,也就是说一次或多次xxx.这样的形式。如此匹配的话还是有遗漏,有的邮箱@前半部分是有特殊符号的,比如-_+.等,还需要包括这些。3、邮箱包括特殊符号匹配,如[email protected]
def test13():
    strs="[email protected]"
    reg="\w+([-_+.]\w+)*\[email protected](\w+.)+\w+"
    print re.match(reg,strs).group()

4、如果@后边也有特殊符号呢,如[email protected]_ne.com

def test13():
    strs="[email protected]_ne.com"
    reg="\w+([-_+\.]\w+)*\[email protected]\w+([-_+\.]\w+)*\.\w+"
    print re.match(reg,strs).group()

需要注意的是,邮箱的结尾必定是.号跟字母或数字

				
时间: 2024-10-11 22:28:55

通过完善邮箱匹配来一步步学习正则表达的相关文章

一步步学习操作系统(2)——在STM32上实现一个可动态加载kernel的"my-boot"

如果要做嵌入式Linux,我们首先要在板子上烧写的往往不是kernel,而是u-boot,这时需要烧写工具帮忙.当u-boot烧写成功后,我们就可以用u-boot附带的网络功能来烧写kernel了.每当板子上电时,u-boot一般会被加载到内存的前半段,如果我们的kernel之前就已经被烧写到开发板了,那么u-boot会加载kernel到内存的后半段并跳转到kernel的起始地址处执行(或者直接跳转到kernel的起始地址处执行,如果kernel可以直接在flash上执行的话.) 如上图所示,绿

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)

http://blog.csdn.net/jiuqiyuliang/article/details/19967031 目录: 基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一) 基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二) 基于asp.net + easyui框架,一步步学习easyui-datagrid——实现添加.编辑.删除(三) 基于asp.net + easyui框架,一步步学习e

一步步学习javascript基础篇(8):细说事件

终于学到事件了,不知道为何听到“事件”就有一种莫名的兴奋.可能是之前的那些知识点过于枯燥无味吧,说起事件感觉顿时高大上了.今天我们就来好好分析下这个高大上的东西. 可以说,如果没有事件我们的页面就只能阅读了.有了事件,我们可以通过键盘或是鼠标和页面交互了,通过我们不同的操作页面给出不同的响应.好了,开始我们今天的分析吧. DOM0级事件处理方式 什么是DOM0级? 其实世上本来没有DOM0级,叫的人多了就有了DOM0级. 在1998 年 10 月 DOM1级规范成为 W3C 的推荐标准,在此之前

一步步学习javascript基础篇(7):BOM和DOM

一.什么是BOM.什么是DOM BOM即浏览器对象模型,主要用了访问一些和网页无关的浏览器功能.如:window.location.navigator.screen.history等对象. DOM即文档对象模型,针对HTML(或XML)文档的API(应用程序编程接口).描绘的一个层次化的节点树,开发人员可以添加.修改和删除页面的某一部分. 二.细说BOM对象 1.window对象 window对象表示浏览器的一个实例,同时也是ECMAScript 规定的 Global 对象.(Global :所

一步步学习javascript基础篇(3):Object、Function等引用类型

我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂数据类型(即引用数据类型) Object类型 我们用的最多的引用类型就属object类型了,一般用来存储和传输数据是再好不过的.然,它的两种创建方式我们是否了解呢? 1.通过构造函数来创建 如: var obj = new Object(); 在js中的引用类型有个非常灵活的用法,可以动态的附加属性和赋值.

一步步学习javascript基础篇(6):函数表达式之【闭包】

回顾前面介绍过的三种定义函数方式 1. function sum (num1, num2) { return num1 + num2; }  //函数声明语法定义 2. var sum = function(num1, num2){ return num1 + num2; }; //函数表达式定义 3. var sum = new Function("num1", "num2", "return num1 + num2"); //Function

一步步学习JSON

什么是Json json是JavaScript Object Notation(javascript对象表示法)的缩写,是一种轻量的数据格式,是基于javascript的一个子集.与XML一样,json也是一种存储和交换文本信息的语法.相对于XML来说,json更小.更快,更易解析..这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. JSON语法规则 明确JSON语法是javascript对象表示法语法的子集: 数值在名称/值对中 数据由逗号分隔 花括号存放

一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承)

上一篇介绍了对象创建的几种基本方式,今天我们看分析下对象的继承. 一.原型链继承 1.通过设置prototype指向“父类”的实例来实现继承. function Obj1() { this.name1 = "张三"; } function Obj2() { } Obj2.prototype = new Obj1(); var t2 = new Obj2(); alert(t2.name1); 这里有个明显的缺点就是:(如果父类的属性是引用类型,那么我们在对象实例修改属性的时候会把原型中

一步步学习javascript基础篇(2):作用域和作用域链

作用域和作用域链 js的语法用法非常的灵活,且稍不注意就踩坑.这集来分析下作用域和作用域链.我们且从几道题目入手,您可以试着在心里猜想着答案. 问题一. if (true) { var str = "李四"; } alert(str);//弹出值是? 问题二. function add(num1, num2) { var sum = num1 + num2; } add(1,2); alert(sum) //弹出值是? 问题三. var str1 = "张三"; v