微信扫一扫打赏支持

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>

 

posted @ 2018-05-26 23:44  范仁义  阅读(289)  评论(0编辑  收藏  举报