zoukankan      html  css  js  c++  java
  • JS之正则

    概念:正则表达式:用一些特殊符号(字符)代表一些特定的内容,用来查找与匹配符合规则的字符串.

    一  正则表达式的定义:

    1 直接定义   /正则表达是内容/[修饰符]  推荐使用 eg:var reg=/d/g

    2 对象定义  var reg=new RegExp(字符串,修饰符)

    二转义字符

             d        数字

             D       非数字

             s        空格

             S       非空格

             w        数字、字母、下划线

             W       非数字、非字母、非下划线

                      单词的边界,独立的部分(起始位置、结束位置、空格)

             B         非边界的部分

             .           任意一个字符

             .          真正的点

    三量词

        +           {1,}            至少重复1次,最多不限

        ?           {0,1} 至少重复0次,最多重复1次

        *            {0,}            至少重复0次,最多不限

       {n,}          至少重复n次,最多不限

       {n,m}       至少重复n次,最多重复m次

        |             或者  eg: a|b

        ^             匹配开始

        $            匹配结束

        [ ]           匹配中括号中的任意一个字符,只代表一个字符  [1-9] 1-9之间的任意一个字符    [a-z] a-z之间的任意一个字母   [A-Z] A-Z之间任意一个字母

        [^1-2]     取反  排除数字1,2

    四 匹配中文

       [u4e00-u9fa5]   任意一个汉字

     五 方法

    1 test

     查看正则与指定的字符串是否匹配

    语法: 正则.test("字符串")

    返回值: true  成功

                  false 失败

    1 var str="xubj";
    2 console.log(/b/.test(str)); // true
    3 console.log(/bao/.test(str)); // false

    2 search 找匹配的字符串首次出现的位置

    字符串.search(字符串或者/正则/)

    返回值:

    找到     返回下标

    未找到  返回-1

    var str="nihaoxubj";
    console.log(str.search("i"));// 1 返回下标
    console.log(str.search(/d/g));//-1 未找到返回-1

    3 match  匹配字符串或者正则,把匹配到的结果放入数组中

    语法 字符串.match(字符串或者正则)

    返回值:

    找到     返回找到的结果数组

    未找到  null

    var str="xubjsdsfdsxubjsd25";
    console.log(str.match(/xubj/)); // ["xubj", index: 0, input: "xubjsdsfdsxubjsd25"]
    console.log(str.match(/xubj/g)); // ["xubj", "xubj"]
    console.log(str.match(/z/)); // null

    4 replace 替换匹配到的字符串

    语法 字符串.replace(字符串或者正则,字符串或者函数)

    返回值: 替换后的新字符串,原字符串不变

    注意:第二个参数是函数的话一定要有返回值,否则会用undefined替换原来的内容

     

    var str="xubj";
    console.log(str.replace(/x/,0)); // 0ubj  返回变化的字符串
    console.log(str); // xubj 原字符串不变
    
    
    
    var newStr=str.replace(/x/,function(){
        return 'f';
    });
    console.log(newStr);// fubj
    
    
    var newStr1=str.replace(/x/,function($0,$1,$2){
        console.log($0,$1,$2);//x 0 xubj
        /*
          参数1  要匹配的内容,与replace的第一个参数一样
          参数2 匹配内容对应的位置下标
          参数3 原字符串
        */
    });
    
    
    // 例子 把字符串中的x变成 *
    var str="xubjnihaoxubj";
    var newStr2=str.replace(/xu/g,function($0,$1,$2){
         var str="";
         for(var i=0;i<$0.length;i++){
              str+="*";
         }
         return str;
    });
    console.log(newStr2); // **bjnihao**bj

    二 分组与子项

    分组  用()

    子项   放在小括号里的内容,每一个小括号可以看作是一个子项

    Replace方法匹配子项

    参数从第二个开始,就对应每一个子项

    // replace方法匹配子项
    var reg=/(d+)(-)/g;
    var str="2017-12-08";
    var newStr=str.replace(reg,function($0,$1,$2){
        //console.log($0);// 2017- 12- 跟正则里的内容一样(要匹配的内容)
        // console.log($1); // 2017 12 第一个分组中的内容
        // console.log($2); // - -第二个分组中的内容
        return $1+'/';
    });
    console.log(newStr); // 2017/12/08

    Match 方法匹配子项

    有g   返回的数组里没有子项

    没有g 返回的数组里有子项 

    //match方法匹配子项
    var str="xubj";
    console.log(str.match(/(xu)(b)(j)/)); //["xubj", "xu", "b", "j"]没有g 返回子项
    console.log(str.match(/(xu)(b)(j)/g));//["xubj"]  有g 不返回子项
    //格式化日期
    var d1="2017-12-08";
    var d2="2017+++12++++08";
    var d3="2017////12//08";
    var d4="2017+---12+++-08";
    //解释 一堆数字一堆非数字一堆数字一堆非数字一堆数字
    var reg=/(d+)D+(d+)D+(d+)/;
    var newStr=d1.replace(reg,function($0,$1,$2,$3){
        //$1,$2,$3代表分组中的子项
        return $1+''+$2+''+$3+'';
    });
  • 相关阅读:
    虚拟设备 ide1:0 将开始断开
    虚拟机集群启动 某一台启动失败
    jeesite1,工具类,文件介绍
    line-clamp
    js中同名的函数的调用情况
    获取子页面iframe的点击事件及iframe跨域的交互
    Docker环境搭建入门
    软件工程课后作业:论我对百度搜索的看法
    第二阶段第十天12.10
    软件工程:用户场景描述
  • 原文地址:https://www.cnblogs.com/xubj/p/8022294.html
Copyright © 2011-2022 走看看