• 你好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(//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>
  • 相关阅读:
    C#基础学习(二)
    C#基础学习(一)
    使用finalshll连接linux
    如何在显示表控件的时候隐藏某些列
    SMARTFORMS文本编辑器设置为SAP系统默认的
    python教学 目录
    [Unity官方文档翻译]ScrollRect
    <转载>解决div里面img的缝隙问题
    简单插入类排序
    利用border和伪类画出三角形 ps:好久没写博客了。。。
  • 原文地址:https://www.cnblogs.com/zqm0924/p/13169411.html
Copyright © 2020-2023  润新知