正则表达式详解

点号(.)是元字符,匹配除换行符以外的任意字符。

星号(*)是元字符,代表数量。 点号星号连在一起就是匹配任意数量的不包括换行符的字符。 \s匹配任意空白字符。 \b匹配单词开始或者结束。 []匹配括号中的任意一个字符。 电话正则: 0\d{2}-\d{8} {5-18}错误,应该{5,18}匹配5至18位 匹配标题 <title>.*<\/title> {n,}//重复n次或者n次以上 [aesdfs]//匹配任意一个字符 [.?!]//匹配标点符号 c[aou]t//匹配cat,cot,cut三个单词,而不匹配caout 下面是一个纠正我错误理解的例子: $reg = "/[aby\}]/"; }是个元字符,所以使用\}表示},但实际上这个转义却是多余的,因为}在字符组中,无法发挥意义,不会引起歧义,所以不需要转义。那么字符串中有\会不会被当作普通字符呢?实际没有没有被匹配。如果需要匹配需要这样写: $reg = "[}aby\\]"; 下面的例子: c[aou?*)]t // 其中?和*号都不需要转义。原因字符组里匹配单个字符。 电话号码多种格式匹配: \(?0\d{2}[)-]?\d{8} 可以匹配到:(099)88888888 088-99999999 09999999999 [^a] 匹配非a的任意字符 \S 不包含空白符的字符串 匹配链接地址: <a[^>]+> <a href="http://www.beijingqingnian.com">北京青年</a> 结果:<a href="http://www.beijingqingnian.com"> 分支概念: 例如:要匹配 cat,hat,fat,toat的正则表达式 分析前面匹配可以是c,h,f,to,然而[]只能匹配单个字符,此时就可以用分支形式: (c|h|f|to)at 其中括号中的表达式视作一个整体,"|"表示分支,对于单字符情况,字符组效率更高。 电话号码: \(0\d{2}\)[- ]? \d{8}|0\d{2}[- ]? \d{8} 注意:匹配分支条件时,从左向右匹配,如果满足某个条件就不会考虑其他条件了。 例如:\d{5}|\d{5}-\d{4} 只匹配5位邮编以及9位邮编的前5位 分组应用 匹配IP:(\d{1,3}\.){3}\d{1,3} 严格来讲这个表达式是有问题的,因为每个数字不能大于255 ((2[0-4]\d|25{\[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2015-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web前端教室

常用技巧之JS判断数组中某元素出现次数

现在前端开发经常需要从api中获取返回的数组, 也许是array,也许是json, 不管是什么,都需要对返回的数据进行再处理, 其中一个重要且经常用到的操作, ...

3258
来自专栏小古哥的博客园

秒懂JS对象、构造器函数和原型对象之间的关系

学习JS的过程中,想要掌握面向对象的程序设计风格,对象模型(原型和继承)是其中的重点和难点,拜读了各类经典书籍和各位前辈的技术文章,感觉都太过高深,花费了不少时...

3107
来自专栏老九学堂

一分钟掌握C语言结构体常见方法

把结构体名称去掉,这样更简洁,不过也不能定义其他同结构体变量了——至少我现在没掌握这种方法。

942
来自专栏Python小屋

Python求解进制问题(阿里巴巴2015笔试题)

问题描述:用十进制计算30的阶乘,然后把结果转换成三进制表示,那么该进制表示的结果末尾会有多少个连续0? 解析:作为笔试题的话,要想按照题意先把阶乘结果计算出来...

3487
来自专栏程序员互动联盟

【面试宝典】static 关键字

面试官:static关键字你了解吗?说一下你的认识。 小白:啊.....有点晕呀,这么宽泛的问题,我该从哪回答呢?头脑一片空白。让我想想...... 面试官:没...

3606
来自专栏Java与Android技术栈

借助Java 8实现柯里化借助Java 8实现柯里化柯里化的好处总结

在函数式编程中,函数的概念跟数学中函数的概念是一样的,类似于“映射”。高阶函数和柯里化是函数式编程的特性。

1132
来自专栏xingoo, 一个梦想做发明家的程序员

程序猿的日常——Java基础之抽象类与接口、枚举、泛型

再次回顾这些基础内容,发现自己理解的又多了一点。对于一些之前很模糊的概念,渐渐的清晰起来。 抽象类与接口 抽象类通常是描述一些对象的通用方法和属性,并且默...

18910
来自专栏木可大大

面向对象的演进过程

我们知道 程序 = 数据结构 + 算法,其中数据结构包括数组、栈、队列、链表、树以及图等,而算法是包含顺序、循环、分支三种逻辑结构的代码,为了使算法能够到处复用...

4319
来自专栏较真的前端

前端面试题“七连击”(一)

1957
来自专栏iOS开发随笔

iOS Swift基础语法(一)

1224

扫码关注云+社区