zoukankan      html  css  js  c++  java
  • 正则表达式 RegExp

    正则表达式 RegExp
    其实与 perl类似,亦即和 php 中的正则类似
    两种方式创建正则表达式式
    1.用字面量
      [var] 正则变量名 = "/正则字符串/[flag]"
      如下:
      var patern = "/js/img";

    2.用 RegExp 构造函数
        [var] 正则变量名 = new RegExp("正则字符串", "flag")
     var ppttern2 = new RegExp("js", "img")

    注意:转义时,字面量的与构造的区别,如为了表示 "/",字面量写面"/",构造中的

    字符得写成 "\/"形式

    原字符串.replace(正则表达式字符串,用于替换的字符串);
    注意:此方法名只用用双引号,不能用“/”,与 exec(),test()不同
    如:
        var pattern = "lin";
        var str = "lin3615";
        var strs = str.replace(pattern, "ok");
        alert(strs);
    此时的 模式一定是如构造中的正则字符串,不加上分隔符号,在引号里面的全部当

    做正则字符串的,如上例,不能写成 var pattern = "/lin/"

    两个主要方法 exec(), test()
    注意:正则表达式不能在两边用双引号,与replace不同
    exec():接受一个参数,即要应用的字符串,然后返回包含第一个匹配项的信息的数

    组,或者在没有匹配项的情况下返回 null。返回的数据虽然是 Array  实例,但包

    含两个额外实例:index,input,其中,index 表示匹配字符串的位置,input 表示应

    用于正则表达式的字符串,一定要有正则匹配才行,不然会出错。数组第一项是整个

    模式匹配的字符串,其它项则是与模式中捕获组匹配的字符串(如果没有捕获组,则

    只有一项)
        var str = "linyuanlong";
        var pattern = /yuan/;
        var pattern2 = /yuanx/;
        var arr = pattern.exec(str);
        var arr2 = pattern2.exec(str);

        alert(arr.index); // 3
        alert(arr2); // null

    ====================================================
        var text = "mon and dad and baby";
        var pattern = /mon( and dad( and baby)?)?/gi;
        var str = pattern.exec(text);
        // alert(str[0]); // mon and dad and baby
        //alert(str[1]); // and dad and baby
        //alert(str[2]); // and bady

    此时,如果在正则中没有设置 g 时,则返回一直是第一个匹配项,而设置了 g 时,

    再次调用时,则一直会向下匹配:
        var text = "cat, bat, fat";
        var pattern = /.at/;
        var s = pattern.exec(text);
        var ss = pattern.exec(text);
        alert(s); // cat
        alert(ss); // cat

    =======================================

    var text = "mon and dad and baby lin ok yes";
    var pattern = new RegExp("mon (and dad( and baby)?)?( lin (ok yes)?)?");
    var str = pattern.exec(text);
    document.write("str[0]: "+str[0] + "<br />");
    document.write("str[1]: "+str[1] + "<br />");
    document.write("str[2]: "+str[2] + "<br />");
    document.write("str[3]: "+str[3] + "<br />");
    document.write("str[4]: "+str[4] + "<br />");
    document.write("str[5]: "+str[5] + "<br />");

    str[0]: mon and dad and baby lin ok yes
    str[1]: and dad and baby
    str[2]: and baby
    str[3]: lin ok yes
    str[4]: ok yes
    str[5]: undefined

    ===========================
        var text = "cat, bat, fat";
        var pattern = /.at/g;
        var s = pattern.exec(text);
        var ss = pattern.exec(text);
        alert(s); // cat
        alert(ss); // bat

    test():用于测试是否与指定的模式匹配,如果是则返回 true,否则为 false
        var text = "cat, bat, fat";
        var pattern = /.at/;
        var s = pattern.test(text);

        alert(s); // true



  • 相关阅读:
    redhat linux 5.6 下安装oracle 11g 时netca报错不能配置监听解决方法
    数据库迁移windows>linux ORACLE 10G
    RedHat Linux 5.3 下安装ORACLE 软件之后手动安装数据库脚本记录
    X Server/Client
    Oracle实例解析:编码与字符集(转)
    RedHat Linux 5.3 下安装ORACLE DATABASE 10G
    Toad 10.5 连接RedHat Linux 5.3 下Oracle 10g
    RedHat5.6 安装mysql
    oracle 数据库开发原则(转自求道的路上)
    第一篇使用windows live writer发布日志
  • 原文地址:https://www.cnblogs.com/lin3615/p/3641744.html
Copyright © 2011-2022 走看看