码迷,mamicode.com
首页 > Web开发 > 详细

JS中的正则表达式

时间:2015-08-09 12:06:40      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

正则表达式是一个描述字符模式的对象,它的主要作用是对字符串进行模式匹配、文本检索,匹配成功则根据正则描述的内容得到匹配字符串(可能会是空)同时代
表检索成功,基于这个结果字符串可以进行再一步的文本替换等功能,匹配不成功就什么结果也没有。正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的
位置即它总是从左至右进行匹配。

一、正则表达式的实质及创建

1、正则表达式即RegExp是JS中的一种引用类型,可以通过实例化得到一个可操作的对象。

2、创建方式:

         正则字面量形式    var pattern = /bfy/gi,ES3规定每次运行相同字面量初始化都返回同一个实例对象,这是不合理的,ES5改正了这个地方,返回新的实例更符合开发人员期望,也可
以减少“残留”的lastIndex值对程序造成的意外影响;

         构造函数形式      var pattern = new RegExp(“bfy”,”gi”),构造函数形式中的字符串参数需要进行双重转义(对元字符和转义字符)。

3、RegExp类型有以下几个静态属性

input、lastMatch、lastParen、leftContext、multiline、rightContext。这几个属性有相应的短属性名,其中三个可以以字符串形式作为replace()方法的第二个参数;此外还有$1-$9存储捕获组。

RegExp的静态属性动态依赖于最近发生的一次模式匹配。

二、正则表达式的组成

正则表达式可以看做是由一系列的字符组合而成。

1、/  /内的字符进行模式匹配,主要有直接量字符、转义字符、元字符(锚字符和特殊语法字符)和字符类。

直接量字符最常见,进行一对一地匹配,如bfy;

转义字符支持非字母的字符匹配,如\n匹配换行符,还有特殊转义字符如\w表示数字和字母的集合;

元字符主要功能是描述相关语法,比如锚字符指定匹配位置(^匹配开始,$匹配结束),特殊语法字符(|表示选择模式);

字符类代表一类字符可用于匹配,分为普通字符类[…]和否定字符类[^…]。

2、/  /外的字符叫做修饰符,对正则的模式匹配进行控制,有i、m、g。

三、正则表达式的特殊语法

正则不仅可以进行简单的字符对字符的匹配,还有几种特殊的语法可以使用。

1、重复———对重复的字符进行匹配

重复字符:{}、?、+、*。重复语法默认是贪婪模式即正则会努力匹配更多的字符,如果不想要这样的模式,可以启动非贪婪模式即在重复字符后面跟一个?。

2、选择———在一个正则中指定多个待匹配项

选择字符:|,从左至右进行匹配,匹配到了就结束。

3、分组及其引用——对子表达式进行分组

分组字符:()——默认会被捕获到的分组,(?:)——不会被捕获到的分组

分组的作用:(1)产生子表达式后可以把它作为一个整体进行处理,比如加上重复,进行选择等等;(2)抽取子模式,也就是可以捕获到子表达式匹配到的那部分的字符串,用\数字进行引用。

四、正则对象的属性

1、source——正则表达式的字面量形式的字符串表示;

2、global——是否开启全局;

3、ignoreCase——是否开启屏蔽大小写;

4、multiline——是否开启多行匹配模式;

5、lastIndex——下一次匹配行为开始检索的位置,在对某次字符串没有匹配完就进行下一次匹配之前要充值它为0,否则会遗留上一次的索引。

五、在脚本中使用正则表达式进行模式匹配

JS中提供了两种方式使用正则表达式进行模式匹配。

1、字符串调用相关方法进行模式匹配

(1)search()——严格的模式匹配方法,参数会强制转换成正则对象。不支持全局g,返回匹配字符串的起始位置或者-1;

(2)replace()——不严格的模式匹配方法,第一个参数可以是字符串也可以是正则,第二个参数可以是字符串也可以是个函数(结合swich结构可以实现很灵活的操作),没有可操作的返回值;

(3)match()——严格的模式匹配方法,参数会强制转换成正则对象。全局模式下返回包含全部匹配字符串的数组,非全局模式下返回关于第一次匹配行为的信息的数组,失败则返回null;

(4)split()——不严格的模式匹配方法,第一个参数是个作为分割依据的字符串或者正则,第二个参数可选,指定进入结果数组的元素个数,返回结果数组。

2、正则对象调用相关方法进行模式匹配

(1)exec()——与match()相似,只是不论是否是全局模式都只返回关于本次匹配行为的信息的数组;

(2)test()——只关注是否匹配,不在乎匹配结果字符串,返回布尔值。

 

原文地址:www.bfy0412.com

JS中的正则表达式

标签:

原文地址:http://www.cnblogs.com/bfywyx/p/4714717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!