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()方法返回正则表达式本身;

  • 相关阅读:
    Notepad++ 配置python快捷键运行方法
    Python 安装setuptools方法
    Python 安装selenium方法
    Sublime 的汉化以及原因
    PHP书籍推荐
    PHP 语言结构(Language constructs)和函数的区别 (转)
    程序员问答网站:StackOverflow
    安装SQL SEVER 2005中的两个常见问题
    致IT同仁 —— IT人士常犯的17个职场错误
    PHP书写规范 PHP Coding Standard
  • 原文地址:https://www.cnblogs.com/yangguoe/p/7979494.html
Copyright © 2011-2022 走看看