为什么要用正则表达式

简单的说:我们与字符串接触的频率非常之高,正则表达式可以极大的提高复杂文本分析的效率,快速匹配出复杂的字符串。

创建一个正则表达式

  1. 直接量语法(字面量)

    varexpression=/pattern/flags;//pattern是要匹配的字符串模式//flags用来标记正则表达式的行为:i不区分大小写;g表示全局搜索;m表示多行模式varreg=/ab/i,表示匹配字符串'ab'不区分大小写
  2. 调用RegExp对象的构造函数

    //RegExp是js中一个内置的对象,是正则表达式的缩写varexpression=newRegExp(pattern,flags)//flags和直接量语法一致//pattern可以是字符串模式,也可以是一个标准的正则表达式,后者必须省略flags//可以写成varreg=newRegExp('ab','i')或者varreg=newRegExp(/ab/i)//不能写成varreg=newRegExp(/ab/,'i')

ES5中规定:使用直接量必须像直接调用RegExp构造函数一样,每次都创建一个新的RegExp实例,所以
上面2种方式创建正则表达式,除了过程不一样,效果是一样的。

RegExp每个实例都有如下属性:

  1. global:布尔值,表示实例是否设置了g标志

  2. ignoreCase:布尔值,表示是否设置了i标志

  3. multiLine:布尔值,表示是否设置了m标志

  4. source:返回创建RegExp对象实例时指定的表达式纯文本字符串。不包含后面的标志

  5. lastIndex:整数,表示实例在接下来的一次搜索匹配项的开始位置,默认从0开始

使用正则表达式的实例方法

RegExp.prototype.exec()

exec()方法为指定的一段字符串执行搜索匹配操作,返回包含第一个匹配项的数组,regexObj.exec(str),没有匹配到则返回null,返回的数组是Array的实例,而且返回值还包含另外2个属性:index:匹配到的字符位于原始字符串的基于0的索引值input:原始字符串`

varmyRe=/ab*/g;varstr='abbcdefabh';varoo=myRe.exec(str)//oo==