正则表达式

正则概述

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>


<script>
    //正则定义。(1.内置对象法。  2.字面量)

    //1.对象定义法
    var reg1 = new RegExp(/abc/);

    //2.字面量[]{}/a/
    var reg2 = /def/;
    console.log(reg2);
    console.log(typeof reg2);


    //使用:test();正则表带是有一个方法,test,有一个返回值是bool类名,决定参数是否符合正则表达式

    console.log(reg1.test("abc"));
    console.log(/abc/.test("hjkl"));

</script>

</body>
</html>

五大内部类

预定义类

50BBDFA4-A9CB-48BA-8583-32464F8781E7.png
         //. [^\n\r] 除了换行和回车之外的任意字符(“”不行)
//        console.log(/./.test("\n\r"));   //false
//        console.log(/./.test("adsfadsgdfgdfg")); //true

          //\d [0-9] 数字字符   \D [^0-9] 非数字字符
//        console.log(/\d/.test(123)); //true
//        console.log(/\d/.test("adsfadsgdfgdfg")); //false
//
          //\s [ \t\n\x0B\f\r] 空白字符  \S [^ \t\n\x0B\f\r] 非空白字符
//        console.log(/\s/.test("     ")); //true
//        console.log(/\s/.test("asdfadsf")); //false

         //\w [a-zA-Z_0-9] 单词字符  \W [^a-zA-Z_0-9] 非单词字符
//        console.log(/\w/.test("$")); //false
//        console.log(/\w/.test("_")); //true

简单类

   //必须是完整的,只多不能少
        console.log(/chaoge/.test("chaoge")); //true
        console.log(/chaoge/.test("chaogenihao")); //true
        console.log(/chaoge/.test("nihaochaoge")); //true
        console.log(/chaoge/.test("chaonihaoge")); //false
        console.log(/chaoge/.test("chao")); //false
//
          //只要包含里面的任何一个就可以
        console.log(/[chaoge]/.test("chaoge")); //true
        console.log(/[chaoge]/.test("chaogenihao"));//true
        console.log(/[chaoge]/.test("nihaochaoge"));//true
        console.log(/[chaoge]/.test("chaonihaoge"));//true
        console.log(/[chaoge]/.test("chao"));//true
        console.log(/[chaoge]/.test("a;ljr jglkrj grjgr"));//true
        console.log(/[chaoge]/.test("*"));//false

负向类

         //不够和正好,返回 false;多了或者没有返回 true
//        console.log(/[^abc]/.test("iiii"));//true
//        console.log(/[^abc]/.test("aiiii"));//只有一部分睁一只眼闭一只眼true
//        console.log(/[^abc]/.test("abc"));//false
//        console.log(/[^abc]/.test("b"));//false
//        console.log(/[^abc]/.test("bcdef"));//只有一部分睁一只眼闭一只眼true
//        console.log(/[^abc]/.test("abcdef"));//只有一部分睁一只眼闭一只眼true

范围类

//        console.log(/[a-c]/.test("dghhj")); //false
//        console.log(/[a-c]/.test("b")); //true

组合类

             console.log(/[a-c1-6]/.test("dghhj")); //false
            console.log(/[a-c1-6]/.test("b")); //true
            console.log(/[a-c1-6]/.test(8)); //false
            console.log(/[a-c1-6]/.test(3)); //true
            console.log(/[a-c1-6]/.test("addddd")); //true

正则边界

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
        //边界必须是abc
        console.log(/^abc$/.test("abc")); //true
        console.log(/^abc$/.test("a")); //false
        console.log(/^abc$/.test("ac")); //false
        console.log(/^abc$/.test("abcabc")); //false



    </script>
</body>
</html>

量词

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
        //量词  (   *+?   {}  )

        //a的个数要 >=0
        console.log(/^a*$/.test("b")); //false
        console.log(/^a*$/.test(""));
        console.log(/^a*$/.test("a"));
        console.log(/^a*$/.test("aa"));
        console.log(/^a*$/.test("aaa"));
        console.log(/^a*$/.test("aaaa"));
        console.log(/^a*$/.test("aaaab")); //false


        //a的个数要 >=1
        console.log(/^a+$/.test("b")); //false
        console.log(/^a+$/.test("")); //false
        console.log(/^a+$/.test("a"));
        console.log(/^a+$/.test("aa"));
        console.log(/^a+$/.test("aaa"));
        console.log(/^a+$/.test("aaaa"));
        console.log(/^a+$/.test("aaaab")); //false


        //a的个数要么0,要么1;
        console.log(/^a?$/.test("b")); //false
        console.log(/^a?$/.test(""));  //true
        console.log(/^a?$/.test("a"));  //true
        console.log(/^a?$/.test("aa")); //false
        console.log(/^a?$/.test("aaa")); //false
        console.log(/^a?$/.test("aaaa")); //false
        console.log(/^a?$/.test("aaaab")); //false


        //{n} 一个参数,循环n次。
        //{n,} 一个参数,循环>=n次。
        //{n,m} 一个参数,循环n次到m次。
        console.log(/^a{1}$/.test("a"));
        console.log(/^a{1,}$/.test("aa"));
        console.log(/^a{1,4}$/.test("aaa"));
        console.log(/^a{1,4}$/.test("aaaa"));
        console.log(/^a{1,4}$/.test("aaaaa")); //false


        //括号提高运算优先级,| 前后有一个符合就可以
        console.log(/(abc)|(xyz)/.test("ab")); //false
        console.log(/(abc)|(xyz)/.test("abcd")); //true
        console.log(/(abc)|(xyz)/.test("xy")); //false
        console.log(/(abc)|(xyz)/.test("xyzaaa")); //true
        console.log(/(abc)|(xyz)/.test("abxy")); //false


    </script>
</body>
</html>

09-验证固定电话号.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div class="box">
        <input type="text"/>
        <span>请输入!</span>
    </div>

    <script>
        //需求:验证座机号!
        //直辖市:三位-八位(010-82935150)
        //普通市:四位-七位(0314-3160186)

        //步骤:
        //1.老三步。
        //2.判断input里面的 值,是否符合正则标准。
        //3.符合给一个样式,不符合给另外一个样式。


        //1.老三步。
        var inp = document.getElementsByTagName("input")[0];
        var span = inp.nextElementSibling || inp.nextSibling;

        inp.onblur = function () {
            //2.判断input里面的值,是否符合正则标准。
//            var reg1 = /^0\d{2}-8\d{7}$/;
//            var reg1 = /^0\d{3}-3\d{6}$/;
            //两个都要执行
            var reg1 = /(^0\d{2}-8\d{7}$)|(^0\d{3}-3\d{6}$)/;

            if(reg1.test(inp.value)){
                //3.符合给一个样式,不符合给另外一个样式。
                span.style.color = "green";
                span.innerHTML = "恭喜您,输入正确!";
            }else{
                span.style.color = "red";
                span.innerHTML = "对不起,您输入的为非法字符!";
            }
        }



    </script>

</body>
</html>

10-验证中文名字.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div class="box">
        <input type="text"/>
        <span>请输入!</span>
    </div>

    <script>

        //需求:输入名字,两位-四为。
        //原理: unicode(\u4e00-\u9fa5)编码{2,4}
        //步骤:
        //1.老三步
        //2.判断input中的value值是否符合正则标准
        //3.符合给一个样式,不符合给另外一个样式

        //1.老三步
        var inp = document.getElementsByTagName("input")[0];
        var span = inp.parentNode.children[1];

        inp.onblur = function () {
            //unicode(\u4e00-\u9fa5)编码{2,4}
            var reg = /^[\u4e00-\u9fa5]{2,4}$/;
            //2.判断input中的value值是否符合正则标准
            if(reg.test(this.value)){
                //3.符合给一个样式,不符合给另外一个样式
                span.style.color = "green";
                span.innerHTML = "恭喜您,输入正确!";
            }else{
                span.style.color = "red";
                span.innerHTML = "对不起,您输入的为非法字符!";
            }

        }


    </script>

</body>
</html>

11-三个方法.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>

        //trim();去除前后的空格
//        var str = "     你好  我很好!     ";
//        console.log(str);
//        console.log(str.trim());

        //replace(); 替换和全局替换值。 i忽略大小写  g全部替换
//        var str = "Today is fine day,today is fine day!"
//        console.log(str);
//        console.log(str.replace(/today/ig,"tomorrow"));


        //search();  给字符差索引
        var str = "abcdefg";
        console.log(str.search(/bc/));
        console.log(str.indexOf("bc"));



    </script>
</body>
</html>

12-trim封装.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>

        var str = "     你好,我      很好!      ";
        console.log(str);
//        console.log(str.trim());
        console.log(trim(str));

        function trim(str){
            var aaa = str.replace(/(^\s+)|(\s+$)/g,"");
            return aaa;
        }


        //面向对象学习
//        String.prototype.aaa = function () {
//            var aaa = str.replace(/(^\s+)|(\s+$)/g,"");
//            return aaa;
//        }
//        console.log(str.aaa());
    </script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 3,981评论 0 20
  • 正则表达式描述的是一种规则,符合这种限定规则的字符串我们认为它某种满足条件的,是我们所需的。在正则表达式中,主要有...
    Single_YAM阅读 735评论 0 4
  • 1. 概述 正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符...
    JRG_Orange阅读 2,511评论 0 50
  • 9.19--9.23 第7章 正则表达式 正则表达式是一个拆分字符串并查询相关信息的过程。 推荐练习网站: js ...
    如201608阅读 1,015评论 0 4
  • 概述 正则表达式(英语:Regular Expression); 本质:用来记录文本规则的代码(为字符串定义规则,...
    magic_pill阅读 255评论 0 2