javascript正则表达式1

建立正则表达式
建立正则表达式和建立字符串相似,建立正则表达式提供了两种方法,一种是采用new
运算符,另外一个是采用字面量方式。正则表达式

 

  
  
           
  
  
  1. var box = new RegExp('box'); //第一个参数字符串  
  2. var box = new RegExp('box''ig'); //第二个参数可选模式修饰符 

模式修饰符的可选参数数组

 

 

  
  
           
  
  
  1. var box = /box/; //直接用两个反斜杠  
  2. var box = /box/ig; //在第二个斜杠后面加上模式修饰符 

2.测试正则表达式
RegExp 对象包含两个方法:test()和exec(),功能基本类似,用于测试字符串匹配。test()
方法在字符串中查找是否存在指定的正则表达式并返回布尔值,若是存在则返回true,不存
在则返回false。exec()方法也用于在字符串中查找指定正则表达式,若是exec()方法执行成
功,则返回包含该查找字符串的相关信息数组。若是执行失败,则返回null。浏览器

 

 

  
  
           
  
  
  1. /*使用new 运算符的test 方法示例*/ 
  2. var pattern = new RegExp('box''i'); //建立正则模式,不区分大小写  
  3. var str = 'This is a Box!'//建立要比对的字符串  
  4. alert(pattern.test(str)); //经过test()方法验证是否匹配 

 

  
  
           
  
  
  1. /*使用字面量方式的test 方法示例*/ 
  2. var pattern = /box/i; //建立正则模式,不区分大小写  
  3. var str = 'This is a Box!';  
  4. alert(pattern.test(str)); 

 

  
  
           
  
  
  1. /*使用一条语句实现正则匹配*/ 
  2. alert(/box/i.test('This is a Box!')); //模式和字符串替换掉了两个变量 

 

  
  
           
  
  
  1. /*使用exec 返回匹配数组*/ 
  2. var pattern = /box/i;  
  3. var str = 'This is a Box!';  
  4. alert(pattern.exec(str)); //匹配了返回数组,不然返回null 

3.使用字符串的正则表达式方法
除了test()和exec()方法,String 对象也提供了4 个使用正则表达式的方法。ide

 

 

  
  
           
  
  
  1. /*使用match 方法获取获取匹配数组*/ 
  2. var pattern = /box/ig; //全局搜索  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.match(pattern)); //匹配到两个Box,Box  
  5. alert(str.match(pattern).length); //获取数组的长度 

 

  
  
           
  
  
  1. /*使用search 来查找匹配数据*/ 
  2. var pattern = /box/ig;  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.search(pattern)); //查找到返回位置,不然返回-1 
PS:由于search 方法查找到即返回,也就是说无需g 全局

 

  
  
           
  
  
  1. /*使用replace 替换匹配到的数据*/ 
  2. var pattern = /box/ig;  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.replace(pattern, 'Tom')); //将Box 替换成了Tom 

 

  
  
           
  
  
  1. /*使用split 拆分红字符串数组*/ 
  2. var pattern = / /ig;  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.split(pattern)); //将空格拆开分组成数组 

RegExp对象的静态属性测试

属性 短名 含义
input $_ 当前被匹配的字符串
lastMatch $& 最后一个匹配字符串
lastParen $+ 最后一对圆括号内的匹配子串
leftContext $` 最后一次匹配前的子串
multiline $* 用于指定是否全部的表达式都用于多行的布尔值
rightContext $' 在上次匹配以后的子串

 

  
  
           
  
  
  1. /*使用静态属性*/ 
  2. var pattern = /(g)oogle/;  
  3. var str = 'This is google!';  
  4. pattern.test(str); //执行一下  
  5. alert(RegExp.input); //This is google!  
  6. alert(RegExp.leftContext); //This is  
  7. alert(RegExp.rightContext); //!  
  8. alert(RegExp.lastMatch); //google  
  9. alert(RegExp.lastParen); //g  
  10. alert(RegExp.multiline); //false 
PS:Opera 不支持input、lastMatch、lastParen 和multiline 属性。IE 不支持multiline 属
性。
全部的属性可使用短名来操做
RegExp.input 能够改写成RegExp['$_'],依次类推。但RegExp.input 比较特殊,它还可
以写成RegExp.$_。

 

 

  
  
           
  
  
  1. /*使用实例属性*/ 
  2. var pattern = /google/ig;  
  3. alert(pattern.global); //true,是否全局了  
  4. alert(pattern.ignoreCase); //true,是否忽略大小写  
  5. alert(pattern.multiline); //false,是否支持换行  
  6. alert(pattern.lastIndex); //0,下次的匹配位置  
  7. alert(pattern.source); //google,正则表达式的源字符串  
  8. var pattern = /google/g;  
  9. var str = 'google google google';  
  10. pattern.test(str); //google,匹配第一次  
  11. alert(pattern.lastIndex); //6,第二次匹配的位 
PS:以上基本没什么用。而且lastIndex 在获取下次匹配位置上IE 和其余浏览器有误差,主要表如今非全局匹配上。lastIndex 还支持手动设置,直接赋值操做。