zoukankan      html  css  js  c++  java
  • 正则表达式基础知识整理

    RexExp类型:
    1.创建方式:
    (1)字面量方式:
    var expression=/pattern/flags;
    pattern部分可以是任何简单或者复杂的正则表达式;
    flags是3个标志:
    a.g全局模式,即模式江北应用于所有的字符串,而非再发现第一个匹配项时候立即停止;
    b.i不区分大小写;
    c.m多行模式,在到达文本末尾时还会继续查找下一行中是否存在与模式匹配的项;
    如:
    /匹配以at结尾的3个字符的组合,不区分大小写
    var pat=/.at/gi;
    正则表达式中的元字符:如果想要皮牌字符串中包含元字符,都必须进行转义;
    ([{/^$|)?*+.]};
    (2)RexExp构造函数方式:
    var pat=new RexExp('要匹配的字符串模式','可选的标志字符串');由于RexExp构造函数的模式参数是字符串,所有的元字符应进行双重转义;
    字面量模式 等价的字符串
    /[bc]at/                   '\[bc\]at'
    /.at/                    '\.at'
    /nameage/     'name\/age'
    /d.d{1,2}/       '\d.\d{1,2}'
    /whello\123/     '\w\hello\\123'
    使用正则表达式字面量和使用RexExp构造函数创建的的正则表达式不一样,正则表达式字面量时钟会共享同一个RexExp实例,而使用构造函数创建的每一个新的RexExp实例都是一个新实例;

    如:

     1 <script>
     2 var rel=null;
     3 for(var i=0;i<10;i++){
     4 re=/cat/g;
     5 re.test('catastrophe');
     6 }
     7 for(var i=0;i<10;i++) {
     8 re = new RexExp('cat', 'g');
     9 re.test('catastrophe');
    10 }
    11 </script>

    第一个循环体中,只为RexExp只为/cat/创建了一个RexExp实例,由于实例属性不会重置,因为在循环中再次第哦啊用test()方法就会失败;因为第一次调用已经找到了cat,第二次调用是从索引3开始的,所以找不到了,由于测试到了字符串的末尾,所以下一次调用就从头开始了;
    第二个循环体中美音为此迭代都会创建一个新的RexExp实例,因此每次调用test()都会返回true;
    二,RexExp的实例属性:
    global:
    ignoreCase:
    lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起;
    multiline:
    source:正则表达式的字符串表示,按照字面量形式而非传入构造函数的字符串模式返回;

    1 <script>
    2 var patten=/[bc]at/i;
    3 alert(patten.global);//false
    4 alert(patten.ignoreCase);//true;
    5 alert(patten.multiline);//false
    6 alert(patten.lastIndex);//0
    7 alert(patten.source);//[bc]at
    8 </script>

    三,RexExp的实例方法:
    1.exec('要应用模式的字符串');返回包含第一个匹配项信息的数组,或在没有匹配项的情况下返回null;返回的数组是Array的实例,包含两个额外属性:
    index:表示匹配项在字符串中的位置;
    inpt:表示应用正则表达式的字符串;

    1 <script>
    2 var text='mom and dad and baby';
    3 var pattern=/mom(and dad(and baby)?)?/gi;
    4 var matches=pattern.exec(text);
    5 console.log(matches.index);//0
    6 console.log(matches.input);//mom and dad and baby
    7 console.log(matches[0]);//mom
    8 console.log(matches.input);//mom and dad and baby
    9 </script>

    2.test()方法:
    接收一个字符串参数,在模式与该参数匹配的情况下返回true;

    1 <script>
    2 var text='000-00-0000';
    3 var pattern=/d{3}-d{2}-d{4}/;
    4 if(pattern.test(text)){
    5 alert('the pattern was matched');
    6 }
    7 </script>

    RexExp实例继承了toLoaclString()和toString()方法,都会返回正则表达式的字面量,与创建正则表达式的方式无关;
    RexExp的valueOf()方法返回正则表达式本身;

  • 相关阅读:
    团队项目-smart原则
    团队项目-作业管理系统
    团队模式和团队的开发模式是什么,它们有什么关系?
    软件工作量的估计有哪些方法?
    腾讯qq的发展史
    软件过程与项目管理(第二次作业)
    有学生提到,在大学选课的时候,可以写一个“刷课机”的程序,利用学校选课系统的弱点或漏洞,帮助某些人选到某些课程。或者帮助用户刷购票网站,先买到火车票。这些软件合法么?符合道德规范么?是在“软件工程”的研究范围么?
    mysql中explain的type的解释
    php 中类型转换 numfamat、round函数tips
    python client端收不到server端构造的结构体数据
  • 原文地址:https://www.cnblogs.com/yangguoe/p/7979494.html
Copyright © 2011-2022 走看看