JS高级学习:正则表达式

正则表达式

  • . 表示除了/n以外的任意的一个字符
  • [] 表示的是范围,[0-9]表示0到9之间的任意一个数字
  • [a-z] 表示 所有的小写字母中的任意的一个
  • [A-Z] 表示 所有的大写字母中的任意的一个
  • [0-9a-zA-Z] 表示 所有的数字或者字母中的一个
  • []另一个涵义,把正则表达式中元字符的意义干掉。[.] 就表示一个.
  • | 或者 [0-9]|[a-z] 表示的是要么是一个数字,要么是一个小写字母
  • () 分组,提升优先级 [0-9]|([a-z])|[A-Z]
  • ([0-9])([1-5])([a-z]) 三组, 从最左边开始计算
  • * 表示的是 前面的表达式出现了0次到多次
  • [a-z][0-9]* 小写字母中任意一个,后面 要么没有数字,要么是多个数字
  • + 表示的是 前面的表达式出现了1次到多次
    [a-z][9]+ 小写字母一个后面最少一个9,或者多个9
  • ? 表示的是:前面的表达式出现了0次到1次,最少是0次,最多1次,另一个涵义:阻止贪婪模式
限定符
  • {}更加明确前面的表达式出现的次数

  • {0,} 表示的是前面的表达式出现了0次到多次,和*一样

  • {1,} 表示的是前面的表达式出现了1次到多次,和+ 一样

  • {0,1} 表示前面的表达式出现了0次到1次, 和? 一样

  • {5,10}表示前面的表达式出现了5次到10次

  • {4}前面的表达式出现了4次

  • ^ 表示的是以开始,或者是取非(取反) ^[0-9] 以数字开头
    ^[a-z] 以小写字母开始
    [^0-9] 取反, 非数字 [^a-z] 非小写字母
    [^0-9a-zA-Z_] 特殊符号 _不算特殊符号

  • 以结束 [0-9][a-z] 以小写字母结束

  • ^[0-9][a-z]$ 严格模式,必须是一个数字跟一个字母

  • \d 数字中的任意一个 相当于[0-9]

  • \D 非数字中的任意一个

  • \s 空白符的一个

  • \S 非空白符

  • \w 非特殊符号

  • \W 特殊符号

  • \b 单词的边界

     身份证正则表达式:
        15位或18位
        ([1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX])

        ([1-9][0-9]{14})([0-9]{2}[0-9xX])?


        座机号码
        010-6012141
        0531-6127014

        [0-9]{3,4}[-][0-9]{8}
        \d{3,4}[-]/d{8}

        QQ号码
        [1-9][0-9]{5,10}

        手机号码
        ([1][358][0-9]{8})|([1][4][37][0-9]{8})|([1][7][01367][0-9]{8})

        \d{11}

邮箱正则表达式
[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]){1,2}

案例:验证密码的强度

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            #dv {
                width: 300px;
                height: 200px;
                position: absolute;
                left: 300px;
                top: 100px;
            }

            .strengthLv0 {
                height: 6px;
                width: 120px;
                border: 1px solid #ccc;
                padding: 2px;
            }

            .strengthLv1 {
                background: red;
                height: 6px;
                width: 40px;
                border: 1px solid #ccc;
                padding: 2px;
            }

            .strengthLv2 {
                background: orange;
                height: 6px;
                width: 80px;
                border: 1px solid #ccc;
                padding: 2px;
            }

            .strengthLv3 {
                background: green;
                height: 6px;
                width: 120px;
                border: 1px solid #ccc;
                padding: 2px;
            }
        </style>

    </head>
    <body>
        <div id="dv">
            <label for="pwd">密码</label>
            <input type="text" id="pwd" maxlength="16">
            <!--课外话题-->
            <div>
                <em>密码强度:</em>
                <em id="strength"></em>
                <div id="strengthLevel" class="strengthLv0"></div>
            </div>
        </div>
        <script src="../js/common.js"></script>
        <script type="text/javascript">
            // 获取文本框键盘抬起事件
            my$('pwd').onkeyup = function() {
                // 每次键盘抬起都要获取文本框的内容,验证文本框中有什么东西,
                // 得到一个级别,然后下面的div显示对应的颜色
                my$('strengthLevel').className = "strengthLv" + (this.value.length >= 6 ? getLvl(this.value) : 0);
            };
            // 给我密码,返回对应的级别
            function getLvl(pwd) {
                var lvl = 0; //默认级别是0
                // 密码中是否有数字
                if (/[0-9]/.test(pwd)) {
                    lvl++;
                }
                // 密码中是否有字母
                if (/[a-zA-Z]/.test(pwd)) {
                    lvl++;
                }
                // 密码中是否有特殊符号
                if (/[^0-9a-zA-Z_]/.test(pwd)) {
                    lvl++;
                }
                return lvl;
            };
        </script>
    </body>
</html>

案例:验证用户输入的是否是邮箱

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        请输入邮箱地址:<input type="text" name="" id="email" />
        <script type="text/javascript">
            document.getElementById('email').onblur=function(){
                var reg =/^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/;
                if(reg.test(this.value)){
                    this.style.backgroundColor="green";
                }else{
                    this.style.backgroundColor="red";
                }
            }
        </script>
    </body>
</html>

案例:验证输入的是不是中文

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        请输入名字:<input type="text" name="" id="name" value="" />
        
    </body>
</html>

创建正则表达式对象

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            
            // 两种方式创建
            
            // 对象创建
            var reg = new RegExp(/\d{5}/);
            var str = "我的100000";
            var flag = reg.test(str);
            console.log(flag);

            // 字面量方式创建正则表达式对象
            var reg = /\d{1,5}/;
            var flag = reg.test("我的书:10000");
            console.log(flag);
        </script>
    </body>
</html>

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

推荐阅读更多精彩内容