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



  • 相关阅读:
    【机房收费系统】—— VB中 MSHFlexgrid控件导出Excel
    解决“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”
    手把手教你将Python程序打包为DLL
    电脑C盘(系统盘)怎么清理,以下6个方法你学会了么?
    win7旗舰版怎么降级到专业版|win7旗舰版改成专业版的方法
    UltraISO 软碟通注册码
    “永恒之蓝”处置流程
    C#连接 ORACLE,提示System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本
    RegAsm安装卸载办法
    解决Visual Studio:"无法导入以下密钥文件: xxxx.pfx,该密钥文件可能受密码保护"
  • 原文地址:https://www.cnblogs.com/lin3615/p/3641744.html
Copyright © 2011-2022 走看看