Day12-JavaScript

一.创建正则

 <script>

        // RegExp js的内置对象
        // js内置对象:Number  String  Boolean  Math  Date  Array  RegExp


        // 创建一个正则表达式(自定义一个匹配规则)

        // 1.字面量创建
        // var reg = /a/;

        // 2.使用new 调用RegExp 构造函数
        var reg = new RegExp(/book/);
        console.log(reg);
        console.dir(reg)

 </script>

二.测试正则表达式

<script>

        // 创建一个匹配规则
        // var reg = /nice/;

        var reg = /nice/i;
        var str = "today is Nice day";

        var reg2 = /a/g;
        var str2 = "aaaaaaaaaaa";

        // 验证 字符串
        // test 返回值是一个布尔值
        console.log(reg.test(str));
        console.log(reg2.test(str2));

        // i  忽略大小写
        // g  全局匹配
        // gi 全局匹配+忽略大小写

        // exec() 方法用于检索字符串中的正则表达式的匹配。如果字符串中有匹配的值返回该匹配值,否则返回 null。
        // 如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的 lastIndex 属性
        console.log(reg2.exec(str2))
        console.log(reg2.exec(str2))
        console.log(reg2.exec(str2))
        console.log(reg2.exec(str2))

    </script>

三.边界符

<script>

        // ^ 以谁开始
        // $ 以谁结束

        // var reg = /^abc/
        // var reg = /abc$/
        var reg = /^abc$/;

        var str = "abcdefghijklmnopqrstuvwxyz";
        var str2 = "defghijklmnopqrstuvwxyzabc";
        var str3 = "abcdefghijklmnopqrstuvwxyzabc";
        var str4 = 'abc'
        // console.log(reg.test(str));
        // console.log(reg.test(str2));
        // console.log(reg.test(str2));
        console.log(reg.test(str3));
        console.log(reg.test(str4));

 </script>

四.中括号

<script>

        // [] 表示匹配其中任意一项
        var reg = /[abc]/;
        console.log(reg.test('a'));
        console.log(reg.test('b'));
        console.log(reg.test('c'));
        console.log(reg.test('d'));

        var reg2 = /[a-z|A-Z|0-9]/
        console.log(reg2.test("G"));
        console.log(reg2.test("5"));
        console.log(reg2.test("S5"));
 
</script>

五.量词符

 <script>

        // * 出现0次或更多次
        // + 出现一次或更多次
        // ? 出现0次或1次
        // {n}  出现n次 n:程序员指定次数
        // {n,} 出现n次或更多次
        // {n,m} 出现n到m次

        // var reg = /a*/;
        // var reg = /a+/;
        // var reg = /a?/
        // var reg = /^a{6}$/;
        // var reg = /^a{6,}$/;
        var reg = /^[a-z]{6,18}$/;

        console.log(reg.test("avvvvvvvvvvvv"));
        console.log(reg.test(""));
        console.log(reg.test("a"));
        console.log(reg.test("aaaaaaaaaaa"));
        console.log(reg.test("adminqwertyu"));

        // 用户名验证
        var userReg = /^[a-z|A-Z|0-9|_]{8,16}$/;
        // 只能输入以数字字母下划线 8-16位字符
        console.log(userReg.test("_zhang188"));

 </script>

六.正则提取

<script>

        // 创建正则
        var reg = /good/i;
        // String对象的match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
        var str = "today is good day,good good study,day day up";

        // 根据正则表达式 提取字符串中的内容
        console.log(str.match(reg));

        // 取消字符串中的空格
        // console.log(str.split(' ').join(''));

</script>

七.replace

<script>

        // str.replace(targetStr,newStr);
        var str = "today is good day,good good study,day day up";

        // 第一个参数可以修改为正则
        console.log(str.replace('good',"GOOD"));
        console.log(str.replace(/good/g,"GOOD"));
        // 这个时候 如果想让原字符串修改 必须要多一步  赋值
        str = str.replace(/good/g,"GOOD");
        console.log(str);

</script>

八.案例

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .submit {
            width: 100px;
            height: 30px;
            background-image: linear-gradient(to right bottom, pink, skyblue);
            color: white;
            text-align: center;
            line-height: 30px;
            border-radius: 10px;
        }
        img{
            width: 100px;
            height: 100px;
            display: none;
        }
    </style>
</head>

<body>

    <form action="">
        <div>
            用户名: <input type="text" class="username"><img class="hint" alt="">
        </div>
        <div>
            密码: <input type="password" class="pwd">
        </div>
        <div>
            手机号: <input type="tel" class="tel"><img class="hinttel" alt="">
        </div>
        <div>
            邮箱: <input type="email" class="email">
        </div>
        <div class="submit">
            提交
        </div>
    </form>

    <script>

        var username = document.getElementsByClassName("username")[0];
        var pwd = document.getElementsByClassName("pwd")[0];
        var tel = document.getElementsByClassName("tel")[0];
        var email = document.getElementsByClassName("email")[0];
        var submit = document.getElementsByClassName("submit")[0];
        var hint = document.getElementsByClassName("hint")[0];
        var hinttel = document.getElementsByClassName("hinttel")[0];

        // 1.事件源
        // 2.事件类型
        // 3.事件处理程序
        var userReg = /^[a-zA-Z0-9_]{6,18}$/;
        username.oninput = function () {
            // this 在事件绑定中 指向事件源
            console.log(this.value);
            // 拿正则表达式验证用户输入的值
            console.log(userReg.test(this.value));
            
            hint.style.display = "inline-block";
            if (userReg.test(this.value)) {
                
                hint.src = "https://n.sinaimg.cn/sinacn18/242/w634h408/20180608/54fd-hcscwxa6333205.png"
            } else {
                hint.src = "https://img0.baidu.com/it/u=4204695701,1693707332&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500"
            }
        }

        var telReg = /^1[3|5|7|8|9][0-9]{9}$/
        tel.oninput = function () {
            // this 在事件绑定中 指向事件源
            console.log(this.value);
            // 拿正则表达式验证用户输入的值
            
            hinttel.style.display = "inline-block";
            if (telReg.test(this.value)) {
                
                hinttel.src = "https://n.sinaimg.cn/sinacn18/242/w634h408/20180608/54fd-hcscwxa6333205.png"
            } else {
                hinttel.src = "https://img0.baidu.com/it/u=4204695701,1693707332&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500"
            }
        }

    </script>

</body>

</html>

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值