你好javascript day15

1)元字符

(?=\D+\d)   条件是首字母不能是数字,但是整个字符串中必须含有一个数字

(?=.*[a-z])  必须包含一个小写字母,字母可以任意位置

(?=.*[A-Z])  必须包含一个大写字母,字母可以任意位置

([a-zA-Z0-9]{8,16})   大小写字母和数字字符最少八个,最多十六个

/^(?=\D+\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9]{8,16}$/     最少一个大写字母和小写字母,数字字母大小写总长度最少八个最多十六个

 

var  reg=/abc/;

abc是元字符,要求必须包含a接下来是b,再接下来是c的字符

console.log('acdssdh').match(reg));  //false

 

通配符 .  任意一个字符

var reg=/c.t/g;

console.log('cdtcat'.match(reg));   //true

 

 

\.   将通配符转换为字符点的含义

var  str='a.tabt';

console.log(str.match(/a\.t/g));   //true

 

当遇到\内容  相当于将内容转换为字符  \\  表示\字符

 

满足[]内任意一个字符   中括号内代表任意一个字符

let str='a&tacta1tadtalt';

console.log(str.match(/a.t/g));

console.log(str.match(/a[abcdefg]t/g));

 

[0-9]  0到9的自然数

[a-z] a到z的小写字母

[A-Z]  A到Z的大写字母

[a-zA-Z]  

[0-9a-zA-Z]

[\u4e00-\u9fa5]  所有汉字的区间  

 

. 通配符在[]内不需要转义,因为在中括号内,就是字符,不是通配符

除了通配符. 以外在[]内其他符号还是需要转义   [,], 这两个字符也需要转义

不管中括号内有什么内容,都只代表一个字符

console.log("1231".match(/[1-31]/g)); //123  多出重复的的1无效  

 

反义字符

/[^0-9] / 除了数字以外的所有字符

/[^a-zA-Z]/  除了字母外的

/[a^bc]/  如果^不是在第一位,就是字符本身。实际这个是匹配  acd^四个字符中任意一个

 

常用区间快捷方法

/\w/   === /[a-zA-Z0-9]/

/\W/  ===/^[a-zA-Z0-9]/

/\d/   ===/[0-9]/

/\D/  ===/^[0-9]/

/\s/  ===/ /  空格

/\S/  ===/^  /  非空

 

2)重复  

var str='caaaaaaat';

console.log(/caaaaaaat/.test(str));

a{7}  a重复七次

console.log(/ca{7}t.test(str));

 

任何内容重复0次都是 ""   a{0}  Z{0}   9{0}  都是空字符

console.log("aaaaaaaaaa".match(/aa{0}/g)); //  aa{0}  ==>   a""  ==> a

 

var  str="caat";  //希望满足可以匹配任意区间的a  

要满足这样的重复次数就确定最小重复次数为2,最大重复次数为五次

console.log(/ca{2,5}t/.test("caaaaa"));//true

{}  花括号内第一个值是最小重复的值,第二个值是最大重复的值

 

{0,1}  有或者没有都可以

console.log(/cats{0,1}/.test("cat"));//true

 

最大优先匹配  贪婪匹配

console.log("aaaaaaaaaaaaab".match(/a{0,4}/g));//匹配了所有的a

 

最少2个最多不限

console.log("caaaaaaaaaaat".match(/ca{2,}t/));

console.log("aaaaaaaaaa".match(/a{0,}/g));//输出所有的a

 

常用字符

/ca{0,}t/   ===  /ca*t/                          {0,}      *  有或者没有,有多少个都可以

/ca{1,}t/   === /ca+t/                          {1,}      + 有至少一个以上

/ca{0,1}t/  ===  /ca?t/                        {0,1}     ?  有没有都可以,最多一个

 

起始符和结束符

^  写在[]叫反义,写在中括号外最前叫起始

$  写在正则最后叫结束

/^a$/    "a"

/^abc$/  "abc"

 

非贪婪匹配

console.log("caataaaataaaaat".match(/c.*t/));

console.log("caataaaaataaaat".match(/c.*?t/));

 

非贪婪匹配

console.log(/<\/?.+?>/g);

 

|  或者

console.log("abac".match(/a[bc]/g));

console.log("abac".match(/ab|ac/g));

console.log("abcd".match(/a|b|c|d/g));  //  /[abcd]/

console.log("abcd".match(/a|b|c|d|/g));

当多写一个或者符号,代表或者一个空字符  ""

 

单词去空格

var  str="sss     fffff    gggg   kkk".split(/\b/g);

str=str.filter(function(item){

if(item.trim().length>0)  return item;
});
console.log(str);

 

紧邻其后

?= 紧邻的会,其他的不会      ?!当前紧邻的不会,其他的会

?<= 前面紧邻的,后一个会     ?<!  前面紧邻的不会,其他的全会   前置条件  
 
 
3)匹配
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text"><span></span>
    <div></div>
    <script>
        var span,ids,div;
        init();
        function init(){
            div=document.querySelector("div");
            span=document.querySelector('span');
            var input=document.querySelector("input");
            input.addEventListener("input",inputHandler);
        }

        function inputHandler(e){
            if(ids) return;
            // console.log(e.currentTarget);
            // input是自己起的参数名,就是下面传入e.currentTarget
            ids=setTimeout(function(input){
                clearTimeout(ids);
                ids=0;
                // console.log(this); ????window
                // e.currentTarget  不存在 ????因为setTimeOut执行时间比较晚,异步
                judgeTextContent(input.value)
                // 文本框中只有数字
                // input.value=input.value.replace(/\D/g,"");
            },500,e.currentTarget)
        }

        function judgeTextContent(value){
            judgeTxt(value)
        }


        /*判断有没有字符 
        function judgeTxt(value){
            if(/[a-zA-Z]/g.test(value)){
                span.textContent="包含有字符";
                span.style.color="red";
            }else{
                span.textContent="不包含字符";
                span.style.color="green";
            }
        } */


        /*判断字符串中是否包含1-3 
        function judgeTxt(value){
            if(/[1-3]/g.test(value)){
                span.textContent="包含1-3";
                span.style.color="green";
               
            }else{
                span.textContent="不包含1-3";
                span.style.color="red";
            }
        } */


/*    判断内容是否是纯数字
        function judgeTxt(value){
            // 包含数字以外的其他字符
            if(/[^0-9]/.test(value)){
                span.textContent="不是纯数字";
                span.style.color="red";
            }else{
                span.textContent="是纯数字";
                span.style.color="green";
            }
        } */


/*    将符号转换为中文
        function judgeTxt(value){
            div.textContent=value.replace(/[+\-*\/=]/g,function(item){
                switch(item){
                    case "+": return "加";
                    case "-": return "减";
                    case "*": return "乘";
                    case "/": return "除";
                    case "=": return "等于";
                }
            })
        } */



/* 
        function judgeTxt(value){
            // 这个约定字符长度6-9位
            // if(/^[a-z][0-9]{5,8}$/.test(value)){
                //* {0,} 前面必须是空字符或者任意多个小写字母后面是5-8个数字,数字后面不能有任何东西
            // if(/^[a-z]*[0-9]{5,8}$/.test(value)){
                // +{1,} 前面必须至少有一个小写字母,可以有无数个小写字母,后面是5-8个数字,数字后面不能有任何东西
            // if(/^[a-z]+[0-9]{5,8}$/.test(value)){
                // ? {0,1} ?有或者没有都行,最多一个小写字母,后面是5-8个数字,数字后面不能有任何东西
            if(/^[a-z]?[0-9]{5,8}$/.test(value)){
                span.textContent="写对了";
                span.style.color="green";
            }else{
                span.textContent="写的不对";
                span.style.color="red";
            }
        }  */

     
        function judgeTxt(value){
            // |  是依次匹配
            // if(/^[1-9]$|^[12][0-9]$|^3[01]$/.test(value)){
            if(/^[12]?[0-9]$|^3[01]$/.test(value)){
                span.textContent="1-31匹配成功";
                span.style.color="green";
            }else{
                span.textContent="1-31匹配不成功";
                span.style.color="red";
            }
        }




        /* setTimeout(function(传入的参数){
            // 定时后执行的函数
        },定时,传入的参数) */
    </script>
</body>
</html>

 

posted @ 2020-06-20 17:19  cruor  阅读(167)  评论(0编辑  收藏  举报