JavaScript正则表达式

JS中两种创建正则表达式的方式:

    1,使用new关键字创建

        var box = new RegExp(‘box‘,‘ig‘);  //第一个参数是模式字符串,两个反斜杠是正则表达式的字面量表示方法,

        //第二个参数是模式修饰符  i 忽略大小写   g  全局匹配   m  多行匹配

    2,使用字面量方式创建(常用的方法)

        var box = /box/ig;


测试正则表达式

    test()方法  在字符串中测试模式匹配,返回true和false

    exec()方法 在字符串中执行匹配,返回匹配结果数组,无结果返回null

例子:

    var pattern = new RegExp(‘Box‘,i);

    var str = ‘This is a box‘;

    alert(pattern.test(str));  //true


    var pattern = /box/i;

    var str = ‘This is a box‘;

    alert(pattern.test(str));  //true


    var pattern = /box/i;

    var str = ‘box‘;

    alert(typeof pattern.exec(str));  //返回的数据类型是object,如果没有匹配到就返回null


使用字符串的正则表达式方法

    str.match(pattern)方法  返回pattern中的子串或者null

        var pattern = /box/i;

        var str = ‘This is a box!That is a box!‘;

        alert(str.match(pattern));  //返回数组


    str.search(pattern)方法,返回的是第一匹配结果的位置,如果没有匹配则返回-     

        var pattern = /box/i;

        var str = ‘This is a box!That is a box!‘;

        alert(str.search(pattern));  //返回数组


    str.replace(pattern,str); //返回用pattern替换匹配结果的字符串   

        var pattern = /box/i;

        var str = ‘This is a box!That is a box!‘;

        alert(str.replace(pattern,‘Tom‘));  //返回数替换之后的字符串,默认只替换第一个


    str.split(pattern)  //返回按指定字符分割的数组

        var pattern = /!/i;

        var str = ‘This is a box‘;

        alert(str.split(pattern));  //This,is,a,box


正则表达式的静态属性

    var pattern = /google/i;

    var str = ‘this is google!‘;

    pattern.tset(str);  //必须执行一下,静态属性才有效

    alert(RegExp.input);  //this is google

    alert(RegExp.leftContext);  //匹配字符串的左字符串

    alert(RegExp.rightContext);  //匹配字符串的右字符串

    alert(RegExp.lastMatch);  //匹配最后一次匹配的字符串


正则表达式的实例属性

    global,ignoreCase,lastIndex,multiline,Source

    var pattern = /google/;

    alert(pattern.global);  //false


获取控制

    ‘ . ‘    匹配除换行之外的任意一个字符

    ‘ * ‘   匹配任意零个一个或多个字符

    ‘ + ‘  匹配任意一个或多个字符

    ‘ ? ‘  匹配任意一个或零个字符

    var pattern = /go{2,4}gle/;  匹配o字符2到4次

    var pattern = /go{2}gle/;  匹配o字符2次

    var pattern = /go{2,}gle/;  匹配o字符2次以上

    var pattern = /go[a-z]gle/;  匹配a-z之间任意字母

    var pattern = /go[A-Z]gle/;  匹配A-Z之间任意字母

    var pattern = /go[0-9]gle/;  匹配0-9之间任意数字

    var pattern = /go[a-zA-Z0-9]gle/;  匹配a-zA-Z0-9之间的任意字符

    var pattern = /go[^0-9]gle/;  匹配非0-9之间任意数字

    var pattern = /^[0-9]oogle/;  匹配0-9之间任意数字开头的

    var pattern = /\woogle/;  匹配一个任意数字字母下划线

    var pattern = /\Woogle/;  匹配一个任意非数字字母下划线

    var pattern = /\doogle/;  匹配一个任意数字

    var pattern = /\Doogle/;  匹配一个任意非数字


匹配空格的方法

    (1) 直接使用空格匹配

    (2)\s表示空格匹配

\b匹配到达边界

匹配选择模式

    var pattern = /google|baidu|bing/;

    var str = ‘this is a bing‘;

    alert(pattern.test(str));  //true  匹配概念,不是相等


    var pattern = /google{4,8}$/;

    var str = ‘googleeeeee‘;

    alert(pattern.test(str));  //true  匹配前面字符4-8次


    var pattern = /(google){4,8}$/;

    var str = ‘googlegooglegooglegoogle‘;

    alert(pattern.test(str));  //true  匹配前面分组4-8次


贪婪和惰性

    var pattern = /[a-z]+/;  这里使用了贪婪模式

    var str = ‘abcdefg‘;

    alert(str.replace(pattern,‘1‘));  // 1


    var pattern = /[a-z]+?/;  这里使用了惰性模式

    var str = ‘abcdefg‘;

    alert(str.replace(pattern,‘1‘));  // 1bcdefg


    var pattern = /[a-z]+?/g;  这里使用了惰性模式并开启全局

    var str = ‘abcdefg‘;

    alert(str.replace(pattern,‘1‘));  // 1111111


    var pattern = /8(.*)8/;  使用了贪婪

    var str = ‘8google8 8google8 8google8‘;

    document.write(str.replace(pattern,‘<strong>$1</strong>‘));  //<strong>8google8 8google8 8google8</strong>


    var pattern = /8(.*?)8/g;  使用了惰性,开启全局

    var str = ‘8google8 8google8 8google8‘;

    document.write(str.replace(pattern,‘<strong>$1</strong>‘));  //<strong>google</strong><strong>google8</strong><strong>8google8</strong>

更多好文章:请到IT人才网

JavaScript正则表达式,布布扣,bubuko.com

JavaScript正则表达式

上一篇:转:C++ 性能测试支持


下一篇:Eclipse及Eclipse为基础的App报错“Failed to create the Java Virtual Machine”的解决办法