版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/zkn_CS_DN_2013/article/details/24243159



RegExp对象的经常用法有test、exec和compile,本节介绍这些方法的功能和用法。

最后,对RegExp对象的属性和方法进行一个综合举例。

2.1  test方法

语法格式为test(str)。该方法检查一个字符串中是否存在创建RegExp对象实例时所指定的表达式模式,假设存在就返回True,否则返回False。假设找到匹配项,则会更新RegExp对象中的有关静态属性。以反映匹配情况。

 

2.2  exec方法

语法格式为exec(str)。该方法使用创建RegExp对象实例时所指定的表达式模式对一个字符串进行搜索。并返回一个包括搜索结果的数组。

     假设为正則表達式设置了全局标志(g),能够通过多次调用exec和test方法在字符串中进行连续搜索,每次都是从RegExp对象的lastIndex属性值指定的位置開始搜索字符串。

     假设没有设置全局标志(g),则exec和test方法忽略RegExp对象的lastIndex属性值,从字符串的起始位置開始搜索。

假设exec方法没有找到匹配,返回值为null;假设找到匹配,则返回一个数组,并更新RegExp对象中有关静态属性以反映匹配情况。返回数组中的元素0包括了完整的匹配结果。而元素1~n依次是表达式模式中定义的各个子匹配的结果。

exec方法返回的数组有3个属性,各自是input、index和lastIndex。

     input属性是整个被搜索的字符串。

     index属性是指匹配在整个被搜索字符串中的位置。

     lastIndex属性是指匹配的子字符串的最后一个字符的下一个字符位置。

代码2.1是对该方法的应用举例。

代码2.1  exec()方法应用:2.1.htm

<html>

<head>

<title>exec()方法应用</title>

<scriptlanguage = "JavaScript">

    varmyString="aaa 111 bbb 222 ccc 1111 222ddd";

    varregex =/111/;    //创建正則表達式对象

    vararray=regex.exec(myString);

    if(array){

         var
str="找到了匹配子串!"+"\n返回数组的值为:"+array+"\n数组元素个数:"

                         +array.length+"\n被搜索的字符串为:"+array.input

                         +"\n匹配子串的開始位置为:"+array.index

                         +"\n匹配子串后面第一个字符的位置为:"+regex.lastIndex;

                 alert(str);

         }

         else{

                 alert("未找到匹配子串。!");

         }

</script>

<body></body>

</html>

2.3  compile方法

语法格式为compile("pattern"[,"flags"])。该方法能够更换RegExp对象实例所使用的表达式模式,并将新的表达式模式编译为内部格式,从而使以后的匹配过程运行更快。假设要在循环中反复使用某个表达式,对其进行编译将使运行加速。可是,假设在程序中使用了不论什么其它表达式模式后,再使用原来编译过的表达式模式,则这样的编译毫无  益处。

2.4   综合举例

代码2.2是对RegExp对象的综合举例,认真分析代码及其运行结果。能够更好地理解RegExp对象。

代码2.2  RegExp对象的使用:2.2.htm

<scriptlanguage="javascript">

      var
strSrc = "xxa1b01c001yya2b02c002zz
";

      var
re = /a(\d)b(\d{2})c(\d{3})/gi;

      var
arr, count = 0;

      while
((arr = re.exec(strSrc)) != null)

      {

             displayResult();

      }

      function
displayResult()

      {

             document.write("<p>这是用正則表達式/"
+ re.source + "/gi对字符串<br>""

                   +
RegExp.input + ""进行第" + (++count) + "次搜索的结果:<br>");

             document.write("RegExp.index为"
+ RegExp.index + "<br>");

             document.write("RegExp.lastIndex为"
+ RegExp.lastIndex + "<br>");

             document.write("RegExp.lastMatch为"
+ RegExp.lastMatch + "<br>");

             document.write("RegExp.lastParen为"
+ RegExp.lastParen + "<br>");

             document.write("RegExp.leftContext为"
+ RegExp.leftContext + "<br>");

             document.write("RegExp.rightContext为"
+ RegExp.rightContext +"<br>");

             document.write("RegExp.$1为"
+ RegExp.$1 + "<br>");

             document.write("RegExp.$2为"
+ RegExp.$2 + "<br>");

             document.write("RegExp.$3为"
+ RegExp.$3 + "<br>");

             document.write("RegExp.$4为"
+ RegExp.$4 + "<br>");

             document.write("arr.index为"
+ arr.index + "<br>");

             document.write("arr.input为"
+ arr.input + "<br>");

             document.write("arr.lastIndex为"
+ arr.lastIndex + "<br>");

             document.write("返回数组的元素个数为"
+ arr.length + "<br>");

             document.write("返回数组的内容为["];

             for(var
i=0; i<arr.length; i++)

             {

                 if(i
< arr.length-1)

                     document.write("""
+ arr[i] + "",");

                 else

                     document.write("""
+ arr[i] + "")</p>");

             }

      }

</script>

JS之RegExp对象(二)的更多相关文章

  1. 前端之JavaScript:JS之DOM对象二

    继续JS之DOM对象二 前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement(' ...

  2. 原生JS:RegExp对象详解

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  3. JS之RegExp对象(一)

    JavaScript提供了一个RegExp对象来完毕有关正則表達式的操作和功能,每一条正則表達式模式相应一个RegExp实例.有两种方式能够创建RegExp对象的实例.      使用RegExp的显 ...

  4. 继续JS之DOM对象二

    前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement('a');添加节点:ele ...

  5. JS之DOM对象二

    前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement('a');添加节点:ele ...

  6. js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression)

    js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression) 一.总结 1.str_replace:正则作用:高效快速匹配 2.break ...

  7. js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/)

    js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/) 一.总结 1.RegExp对象有三个方 ...

  8. js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译)

    js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译) 一.总结 1. RegExp的属性和方法,就是RegE ...

  9. JS RegExp对象(正则表达式)

    笔记整理自:廖雪峰老师的JS教程 正则表达式语法:https://www.runoob.com/regexp/regexp-tutorial.html 目录 创建方式 方式一 方式二 简单使用 判断正 ...

随机推荐

  1. LeetCode(71) Simplify Path

    题目 Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/&quo ...

  2. Java基础学习总结(91)——阿里巴巴Java开发手册公开版

    1.不要嫌名字长 无论是方法,变量,还是函数的取名,不要嫌弃名称太长,只要能够表示清楚含义就可以了. 2.String[] args而不是String args[] 中括号是数组类型的一部分,数组定义 ...

  3. JavaScript 的类型

    var a ="111"; console.log(a.constructor);//function String() { [native code]} var b= Strin ...

  4. WebStorm下载安装

    下载地址:https://www.jetbrains.com/webstorm/ 注册码: http://idea.codebeta.cn

  5. python015 Python3 函数

    Python3 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

  6. Java 学习(4):基本数据类型,变量类型

    目录 --- 基本数据类型 --- 变量类型 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用 ...

  7. [JSP]自定义EL函数以及使用

    有时候在JSP页面需要进行一连串的字符串的处理,需要进行自定义EL函数. 先看EL函数的tld文件: standard.jar下面: 自定义EL函数: 1.编写EL函数(全是public static ...

  8. C++动态特性和C++对象模型——《高质量程序设计12章》

    1.动态特性 静态特性和动态特性,编译时和运行时 虚函数 (1)虚函数的叫覆盖,虚函数不是实现多态的唯一手段(其他语言也可能采用别的方法). 抽象基类: (1)如果将基类的虚函数声明为纯虚函数,则基类 ...

  9. hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]

    传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131 ...

  10. 视图中 jquery 使用data属性

    示例:<input id='username' data-id="{$val['id']}" data-userName="{$val['name']}" ...