测试匹配
RegExp对象方法
- RegExp对象.test(e:String)->Bool, 成功匹配返回true,匹配失败返回False
- RegExp对象.exec(e:String)->Array,在字符串中执行匹配搜索,返回结果数组(原字符串[0],分组字符串[n],…,),不匹配则返回null
String对象方法
- String对象.match(e:RegExp)->String,返回 pattern 中的子串或 null
- String对象.replace(e1:RegExp,e2:String)->String,若成功匹配则返回替换后的字符串,不匹配则返回原字符串(注意:不改变原字符串)
- String对象.search(e1:RegExp)->Number,返回开始匹配的位置 - String对象.split(e1:RegExp)->Array,返回字符串按指定 pattern 拆分的数组
RegExp静态属性(取值前需先测试匹配)
- RexExp.$1 ,返回第一个匹配的分组
两个实践
利用分组可用$x表示以及replace返回值的性质实践特定的功能
1.打印选定的分组
2.交换文本顺序
var pattern =/8(.*)8/;
var str = '8afaqfa8';
document.write(str.replace(pattern,'<strong>$1</strong>'));
var pattern =/(.*)\s(.*)/;
var str = 'gol baidu';
document.write(str.replace(pattern,'$2 $1'));
- 贪婪与惰性
- ‘+’‘*’等符号表示贪婪
- ‘?’表示惰性(禁止贪婪)
var pattern = /[a-z]+?/;
var str = 'abcdefjwxyz';
var result = str.replace(pattern, 'xxx');
alert(result); //只匹配第一个a,即遇到匹配项就停止匹配
var pattern = /8(.+?)8/g;
var str = 'This is 8google8, That is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>'); document.write(result);
var pattern = /8([^8]*)8/g; //另一种禁止贪婪
var str = 'This is 8google8, That is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>'); document.write(result);
- ^的用法
- [^0-9]:^在方括号内表示“非”
- ^[0-9]:^在方括号外表示强制从头开始匹配
var pattern = /g[^0-9]*gle/;
var str = 'google';
alert(pattern.test(str));
- 前瞻捕获
利用?=符号,指定后面跟gle的goo,注意:完全没有分组性质
var pattern = /(goo(?=gle))/;
var str = 'google';
alert(pattern.exec(str));