JS正则表达式

一. 正则表达式

正则表达式:其实就是一种匹配规则,用于检索字符串

定义正则表达式的两种方式:1.直接定义 2.构造函数定义

那么正则表达式正则强大的地方是它可以写 通配符(拥有特殊含义的字符)

二. 通配符

\w 表示:字母、数字、下划线

\W 表示:除了字母、数字、下划线以外的字符

\d 表示:数字

\D 表示:非数字

^ 表示:以^符号后面的第一个字符开头

表示:以表示:以符号前面的第一个字符结尾

{n} 表示:重复n次

{n,m} 表示:重复n到m次

[xyz] 表示:其中任意一个字符

+ 表示:重复前一项1次或多次 等价于 {1,}

* 表示:重复前一项0次或多次 等价于 {0,}

? 表示:重复前一项0次或1次 等价于 {0,1}

. 表示:除了换行符以外的任意一个字符

\. 表示:.字符 ^ 表示:^ \表示:表示:

可以用()将多个字符作为一个整体

\w 等价于 [0-9a-zA-Z_]

| 表示:或者

[\u4E00-\u9FA5] 是常用汉字的unicode编码范围

三. 正则练习

四. 正则表达式配合字符串的方法

replace()方法

默认情况下,replace()方法,只会替换字符串中匹配的第一段内容

使用正则表达式,添加全局匹配修饰符g,可以替换匹配全部内容

使用正则表达式,添加忽略大小写修饰符i,在匹配内容时会忽略大小写

search()方法

可以通过正则表达式查找位置

五. 添加学生练习

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>添加学生</title>

    <style>

        .err{

            color: red;

        }

        .ok{

            color: green;

        }

    </style>

</head>

<body>

    <form>

        <table>

            <tr>

                <td>姓名:</td>

                <td>

                    <input type="text" id="name">

                    <span id="nameMsg"></span>

                </td>

            </tr>

            <tr>

                <td>年龄:</td>

                <td>

                    <input type="text" id="age">

                    <span id="ageMsg"></span>

                </td>

            </tr>

            <tr>

                <td>性别:</td>

                <td>

                    <input checked name="sex" type="radio" value="0">男

                    <input name="sex" type="radio" value="1">女

                </td>

            </tr>

            <tr>

                <td>爱好:</td>

                <td>

                    <input name="hobby" type="checkbox" value="抽烟">抽烟

                    <input name="hobby" type="checkbox" value="喝酒">喝酒

                    <input name="hobby" type="checkbox" value="烫头">烫头

                    <input name="hobby" type="checkbox" value="睡觉">睡觉

                </td>

            </tr>

            <tr>

                <td>年级:</td>

                <td>

                    <select id="grade">

                        <option value="0">请选择</option>

                        <option value="1">大一</option>

                        <option value="2">大二</option>

                        <option value="3">大三</option>

                        <option value="4">大四</option>

                    </select>

                    <span id="gradeMsg">必须要选择一个年级</span>

                </td>

            </tr>

            <tr>

                <td>邮箱:</td>

                <td>

                    <input type="text" id="email">

                    <span id="emailMsg">请输入正确的邮箱格式</span>

                </td>

            </tr>

            <tr>

                <td>电话:</td>

                <td>

                    <input type="text" id="phone">

                    <span id="phoneMsg">请输入正确的电话格式</span>

                </td>

            </tr>

            <tr>

                <td>生日:</td>

                <td>

                    <input type="text" id="bornDate">

                    <span id="bornDateMsg">请输入正确日期格式</span>

                </td>

            </tr>

            <tr>

                <td></td>

                <td>

                    <button type="submit">提交</button>

                    <button type="reset">重置</button>

                </td>

            </tr>

        </table>

    </form>

    <script>

        //获取姓名文本框

        let name = document.querySelector('#name')

        //获取年龄文本框

        let age = document.querySelector('#age')

        //表单的提交事件

        document.querySelector('form').onsubmit = function(){

            // 返回true提交表单,返回false不提交表单

            if(checkName() & checkAge()){

                return true

            }else{

                return false

            }

        }


        //姓名文本框失去焦点

        name.onblur = checkName

        //验证姓名

        function checkName(){

            //定义验证姓名的正则

            let reg = /^[\u4E00-\u9FA5]{2,4}$/

            // 调用验证方法

            return checkInput("#nameMsg",name,reg,'姓名正确','姓名必须是2-4位汉字')

        }

        //年龄文本框失去焦点

        age.onblur = checkAge

        //验证年龄

        function checkAge(){

            //定义验证年龄的正则

            let reg = /^\d{1,2}$|^1([0-1]\d)|20$/

            // 调用验证方法

            return checkInput("#ageMsg",age,reg,'年龄正确','年龄必须是0-120之间')

        }

        //验证方法,参数分别是:span元素Id,表单元素对象,正则规则,验证成功消息,验证失败消息

        function checkInput(spanId,_this,reg,okMsg,errMsg){

            // 获取消息span

            let span = document.querySelector(spanId)

            //获取信息

            let val = _this.value

            if(!reg.test(val)){

                span.className="err"

                span.innerHTML = errMsg

                return false  //验证失败返回false

            }else{

                span.className="ok"

                span.innerHTML = okMsg

                return true  //验证成功返回true

            }

        }

    </script>

</body>

</html>

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

推荐阅读更多精彩内容