javascript学习笔记(十二) RegExp类型介绍

  1.匹配模式标记:

  g ------ 表示全局模式,而不是发现第一个匹配成功就立刻结束

  i ------- 表示不区分大小写模式

  m ----- 表示多行匹配,一行结束时向下一行继续匹配

  

复制代码 代码如下:

  //匹配第一个bat 或cat,不区分大小写

  var pattern1 = /[bc]at/i

  var pattern2 = new RegExp("[bc]at","i"); //同上

  使用RegEXp是字面量模式要转换成字符串

  /\[bc\]at/ =======> "\\[bc\\]at"

  /\.at/ ==========> "\\.at"

  /name\/age/ ======> "name\\/age"

  /\d.\d{1,2}/ ======> "\\d.\\d{1,2}"

  /\w\\hello\\123/ ====>"\\w\\\\hello\\\\123

  2.RegExp实例属性

  global —— 布尔值,表示是否设置了g 标志

  ignoreCase —— 布尔值,表示是否设置了i 标志

  multiline —— 布尔值,表示是否设置了m 标志

  lastIndex —— 整数,表示开始搜索下一个匹配项的位置

  source —— 字面量形式的字符串

  

复制代码 代码如下:

  var pattern2 = new RegExp("\\[bc\\]at","i");

  alert(pattern2.source); //"\[bc\]at"

  3.RegExp实例方法

  exec()方法 接受一个参数,即应用正则表达式的字符串,

  返回数组和两个属性index和input,数组第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串

  

复制代码 代码如下:

  var text "mom and dat and baby";

  var pattern = /mom( and dad( and baby)?)?/gi;

  var matches = pattern.exec(text);

  alert(matches.index); //0

  alert(matches.input); //"mom and dad and baby"

  alert(matches[0]); //"mom and dad and baby"

  alert(matches[1]); //" and dad and baby"

  alert(matches[2]); //" and baby"

  非全局模式时每次调用exec()返回的都是第一次匹配的项

  全局模式时每次调用ecec()返回字符串的下一个匹配项,lastIndex的值会增加

  test()方法 接受一个参数,即应用正则表达式的字符串,匹配返回 true 否则返回 false

  

复制代码 代码如下:

  var text = "000-00-0000";

  var pattern = /\d{3}-\d{2}-\d{4}/;

  if (pattern.test(test)) {

  alert("匹配!");

  }

  4.RegExp 构造函数属性

  

复制代码 代码如下:

  var text = "this has been a short summer";

  var pattern = /(.)host/g;

  if (pattern.test(text)){

  alert(RegExp.input); //this has been a short summer 最近一次要匹配的字符串,等价于RegExp.$_ ,opera不支持

  alert(RegExp.lastMatch); //short 最近一次的匹配项,等价于RegExp["$&"] ,opera不支持

  alert(RegExp.lastParen); //s 最近一次匹配的捕获组,等价于RegExp["$+"] ,opera不支持

  alert(RegExp.leftContext); //this has been a 匹配项前的文本,等价于RegExp["$`"]

  alert(RegExp.rightContext); // summer 匹配项后的文本,等价于RegExp["$‘"] ,

  alert(RegExp.multiline); //false 是不是多行模式,等价于RegExp["$*"] ,opera和IE都不支持

  }

  RegExp.$1 …… RegExp.$9 存储捕获组

  

复制代码 代码如下:

  var text = "this has been a short summer";

  var pattern =/(..)or(.)/g;

  if (pattern.test(text)) {

  alert(RegExp.$1); //sh

  alert(RegExp.$2); //t

  }