b/g;//非贪婪
document.write(re3.test("abbbaabbb1234")+"<br />");//true
document.write(re3.exec("abbbaabbb1234")+"<br />");//null ,因为设置了g标识,并为贪婪匹配,而上面的test已经贪婪匹配到abbbaabbb,后面只有1234,所以此时匹配不到,返回null
document.write("abbbaabbb1234".match(re3)+"<hr>");//abbbaabbb,注意在设置了g标识后,match只返回匹配到的所有值,这里因为是贪婪匹配,所以匹配了abbbaabbb
document.write(re4.test("abbbaabbb1234")+"<br />");//true
document.write(re4.exec("abbbaabbb1234")+"<br />");//aabbb,aa ,因为设置了g标识,并为非贪婪匹配,而上面的test已经贪婪匹配到abbb,后面只有aabbb1234,所以此时在此匹配到aabbb,此时$1为aa,所以返回aabbb,aa
document.write("abbbaabbb1234".match(re4)+"<hr>");//abbb,aabbb 注意在设置了g标识后,match只返回匹配到的所有值,这里因为是非贪婪匹配,所以匹配了abbb,aabbb
10、反向引用
正则表达式中的匹配组捕获的子字符串。每个反向引用都由一个编号或名称来标识,并通过“\编号”表示法进行引用。
复制代码 代码如下:
/(\w+)/.test("hello-world");
dwl(RegExp.$1);//hello
dwl(/(居)\1/.test("居居"))//true 这里的\1表示第一个小括号里面的内容
dwl("aa bbb cccc".replace(/(\w{2,}) (\w{2,}) (\w{2,})/,"$3 $2 $1")); // cccc bbb aa
11、非捕获性分组 ?:
并不是每个小括号都能通过反向引用进行捕获,在小括号后面加上"?:",即可进行设置非捕获性分组。
复制代码 代码如下:
/(\w+)-(\w+)/.test("hello-world");
alert(RegExp.$0);//undefined
alert(RegExp.$1);//""不会被捕获
alert(RegExp.$2);//world
12、正向前瞻 ?= 和负向前瞻 ?!
(?=str) 匹配后面紧跟是str,比如 he 能够通过模式 /he(?=llo)/ 匹配 字符串 "hello"
(?!str) 匹配后面紧跟不是str,比如 hel 能够通过模式 /he(?!llo)/ 匹配 字符串 "hello"
复制代码 代码如下:
//这样理解,将(?=str)或者(?!str)当做条件,然后考虑匹配其他的部分,匹配到了之后,再拿条件作对比,看符不符合
dwl("he-lloworld".match(/(\w+)(?=world)/g)); //llo 这里先匹配(\w+),找到两个块,he和lloworld,其中he不符合(?=world),而lloworld,只要拆成llo和world连接,就符合(?=world),即,llo链接了一个world,所以这里匹配了llo
dwl("he-lloworld".match(/(\w+)(?!world)/g)); //he,lloworld 这里先匹配(\w+),找到两个块,he和lloworld,其中he不符合(?=world),而lloworld,只要不拆,就符合(?!world),即,llo链接了一个world,所以这里匹配了he,lloworld
13、出几个实例题目?
a、讲一个字符串中的所有英文单词首字母大写?
复制代码 代码如下:
var str = "你好hello世界woRld,我i爱love你you";
var str = str.toLowerCase().replace(/\b\w|\s\w/g,function(s){
return s.toUpperCase();
});
alert(str)
b、去除html代码中的所有标签,除了a标签
复制代码 代码如下:
var str = "<p><a href=''http://www.jb51.net/''>居居居居居居居居居</a ></p><hr/><p> by <em>居居居居居居居居居</em></p>";
var str = str.replace(/<(?!(\/?a))(.|\s)*?>/g,""); // 这里用到了 负前瞻
alert(str); // <a href=''http://www.jb51.net/''>居居居居居居居居居</a > by 居居居居居居居居居
下一节讲一下,常用的正则表达式,整理总结~~~!!!!!楼主喝口水,这么点东西写了快一天。。。