js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/)
js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/)
一、总结
1、RegExp对象有三个方法:compile(编译正则表达式),test(检索字符串中指定的值),exec(检索字符串中指定的值)(和string对象的match有点类似) 。
2、子表达式:分组的表达式,也就是小括号括起来的表达式,var reg1=/([a-z]+)\d/ 其中([a-z]+)就是字表达式
二、js进阶正则表达式13RegExp对象方法
RegExp 对象方法
- compile 编译正则表达式。
compile 方法将正则表达式转换为内部的格式,从而执行得更快。例如,这允许在循环中更有效地使用正则表达式。当重复使用相同的表达式时,编译过的正则表达式使执行加速。
- test 检索字符串中指定的值。返回 true 或 false。
语法:RegExpObject.test(string)
如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。
- exec 检索字符串中指定的值。返回找到的值,并确定其位置。
如果 exec 方法没有找到匹配,将返回 null。如果找到匹配项,则 exec 方法返回一个数组
数组元素 0 包含了完整的匹配项,而元素 1 到 n 包含的是匹配项中出现的任意一个子匹配项。
除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。
当 RegExpObject 是一个全局正则表达式时,exec() 会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置
三、代码
1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8"> 5 <title>课堂演示</title> 6 <style type="text/css"> 7 li{ 8 font-size: 20px; 9 width: 500px; 10 background: rgba(0,180,80,0.3); 11 padding: 10px; 12 margin: 10px; 13 } 14 </style> 15 </head> 16 <body> 17 <hr> 18 19 <script type="text/javascript"> 20 //exec与match的区别 21 //1.exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串 22 //2.当正则表达式无子表达式,并且定义为非全局匹配时,exec和match执行的结果是一样,均返回第一个匹配的字符串内容; 23 //3.当正则表达式无子表达式,并且定义为全局匹配时,exec和match执行,做存在多处匹配内容,则match返回的是多个元素数组 24 //4.当正则表达式有子表达式时,并且定义为全局匹配,exec和match执行的结果不一样,此时match将忽略子表达式,只查找全匹配正则表达式并返回所有内容 25 //5.当正则表达式有子表达示时,并且定义为非全局匹配,exec和match执行的结果是一样; 26 //exec与全局是否定义无关系,而match则于全局相关联,当定义为非全局,两者执行结果相同 27 /* 28 var str="00css3 HTML5" 29 var reg=/\w+/g 30 var reg1=/([a-z]+)\d/ //1、子表达式 31 document.write('<ol>') 32 document.write('<li>'+'原字符串:'+str 33 +'<li>'+str.match(reg) 34 +'<li>'+reg.exec(str) //2、regexp对象的exec方法 35 +'<li>'+str.match(reg1) 36 +'<li>'+reg1.exec(str) 37 +'<li>'+reg1.exec(str).index+'<br/>'+reg1.exec(str).input 38 39 40 ) 41 document.write('</ol>') 42 */ 43 var str='HTML5 HTML5 HTML5 HTML5' 44 var reg=/html5/gi 45 // reg.test(str) 46 // reg.test(str) 47 //reg.lastIndex=5 48 reg.exec(str) 49 //reg.exec(str) 50 alert(reg.lastIndex) 51 </script> 52 </body> 53 </html>