正则

概述:
一个正则表达式是由普通字符(原子),有特殊功能的字符(元字符)和模式修正符组成。每个表达式至少要包含一个普通字符,且表达式要包含在两个反斜线‘/’之间

普通字符:
  (1)包括所有的大小写字母和数字等。
	   比如:'/5/'   匹配字符串中是否有5这个数字

  (2)在一些特殊字符(双引号“”, 单引号‘’, *,+,.) 前使用转义字符"\"取消它的特殊意义。
	  比如:'/\./'  

   (3)一些非打印字符(空白字符),如空格、回车、制表符号
      比如\cx 匹配一个由未知数x指明的控制符,如\cm匹配          一个control-m
		  \f   匹配一个换页符
		  \n   匹配一个换行符
		  \r   匹配一个回车符
		  \t   匹配一个制表符

   (4)通用字符,即匹配所有字母或数字
	  比如\d  匹配任意一个十进制数字 如0~9
		  \D  					 如^0~9	
		  \s  匹配任意一个空白字符   如\f \r \n等
		  \S
		  \w  匹配任意一个数字、字母或下画线   如0~9、a~z或_   
		  \W 						  如^0~9、a~z或_
		  如'/^\w+@\w+(\.\w+){0,3}$/'   email的正则表达式

  (5)自定义原子表[],定义一组形式一样的的原子,且从原子表中只能 选择一个原子进行匹配。
	  比如'/[apj]sp/'  匹配asp, psp, jsp三种,从这三种中选一个作为原子。
有特殊功能的字符:
  (1)限定符:用来匹配多少次才能满足
		*:匹配0次,1次或多次其前的普通符号
		+:匹配1次或多次其前的普通符号
	    ?:匹配0次或1次其前的普通符号
		{n}:匹配n次其前的普通符号
		{n,}:匹配至少n次其前的普通符号
		{n,m}:匹配至少n次,最多m次其前的普通符号

		比如:
		'/a\s*b/'       可以匹配在a和b间0次空白,有一个空白或多个空白。

		'/a\d+b/' 		可以匹配在a和b间有一个数字或多个数字。如a2b,a234b。

		'/a\W?b/'	可以匹配在a和b间0次或1次^0~9、a~z或_   如ab,a#b,a%b 

		'/ax{4}b/'   可以匹配在a和b间有4次x  如axxxxb 

		'/ax{2,}b/'  可以匹配在a和b间至少有4次x 如axxxxxxb  

		'/ax{2,4}b/'  可以匹配在a和b间至少有2次x,最多有4次x 如axxb      axxxxb axxxb 

  (2)边界限制:用来限制单词的边界范围
		^或\A:表示字符串的开始 
		$或\Z:表示字符串的结束
		\b:单词的前或后边界
		\B:除单词边界以外的部分

		如,有一个字符串“this is a test"
		'/^this/'  匹配此字符串是否以this开始的,成功
		'/test$/'  匹配此字符串是否以test开始的,成功
		'/\bis\b'  匹配is两边是否都有边界,成功
		'/\Bthis\b'  匹配this左边不能有边界,右边有边界,成功

  (3)圆点.  :用来匹配除换行符以外的任意一个字符
		如'/a.b/' 匹配在a和b间的任意一个字符,如axb, ayb

   (4)选择符|:用来匹配多个选择中的一个
        如'/linux|apache|php/'  匹配其中的一个

  (5)个体符:用来当作一个单元独立使用
  		如'/(very)*good/' 匹配good,very good, rery very good



再次引用:对于一个正则表达式模式或部分模式其两边添加圆括号()时,就会将其存储到一个临时缓冲区,以供再次使用。访问其则用\\n,n代表1~99个缓存区号	
    如:'/^\d{4}\W\d{2}\W\d{2}$/'  
        这是匹配日期的格式,如2008-08/12,但日期间的分隔符不对应
        \W可以是任意的特殊字符,所以要使用再次引用

        '/^\d{4}(\W)\d{2}\\1\d{2}/' 这样就会匹配成2008/08/12

    当需要使用括号时又不想存储匹配到的结果,可以使用"?:",  "?=",或"?!"
    如:'/(windows)(linux)\\2os/' 再次引用linux
    	'/(?:windows)(linux)\\1os/'   忽略第一个的存储,所以用\\1引用linux   
模式修正符:
	i:不区分大小写(系统默认是区分的)
	m:将字符串视为多行
	s:模式中的圆点.就可以匹配所有的字符,包括换行符
	x:忽略空白不计
	.*?:取消贪婪模式

	如:'/Web Server/ix'    可以用来匹配webserver,忽略大小写和空白
		
		若字符串this is a test
		'/^is/m'  可以匹配this<br>is<br>a<br>test,将字符串视为多行,第二行的开头为is,成功

		若字符串this is a te
		st
		'/te.*st/s'  .和s结合可以匹配任何字符,包括换行符,成功

		若字符串this <b>is</b> a test <b>haha</b>
		'/\<b\>.*?\<\/b\>/' 
		 因为有特殊字符,所以用反斜线\转义,.*为贪婪模式,则会匹配is a test haha,若只想匹
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值