点号(.)是元字符,匹配除换行符以外的任意字符。
星号(*)是元字符,代表数量。 点号星号连在一起就是匹配任意数量的不包括换行符的字符。 \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?)