正则表达式

作者: 浩天天 | 来源:发表于2016-09-01 13:55 被阅读0次
    \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分别是什么?

    • \d:在正则表达式中表示查找[0-9]的任意数字。
    • \w:在正则表达式中表示查找大小写大小写字符、数字、下划线。
    • \s:在正则表达式中表示查找空白字符(空格、tab、换行、回车)
    • [a-zA-z0-9]:查找在这个范围内的任意一个。
    • \b:用于匹配单词的边界,一个单词字符和一个非单词字符的交界。
    • .:查找单个字符,除了换行符和结算符。
    • *:出现0或者多次的字符。
    • +:出现一次或者多次的字符。
    • ?:出现0次或者一次。
    • x{3}:出现3次X。
    • ^:匹配开头的字符串。
    • $:匹配结束的字符串。
    贪婪模式和非贪婪模式指什么?

    答:贪婪模式:尽可能多的去匹配,直到不能匹配了为止。
    非贪婪模式:尽可能少的去匹配,匹配到了立即停止。

    写一个函数trim(str),去除字符串两边的空白字符
    function trim(str){
        str = str.replace(/^\s+|\s+$/g,"")
        return str
    }
    
    实现 addClass(el, cls)、hasClass(el, cls)、removeClass(el,cls),使用正则
    function hasClass(el,cls){
        var reg = new RegExp('(\\s|^)' + cls + '(\\b|$)','g')
        return reg.text(el.className)
    }
    function addClass(el,cls){
        if(!hasClass(el,cls))
        return el.className + ' '+cls
    }
    function  removeClass(el,cls){
        if (hasClass(el,cls))
            var reg = new RegExp('(\\s|^)' + cls + '(\\b|$)','g')
        return el.className.replace(reg,'')
    }
    
    写一个函数isEmail(str),判断用户输入的是不是邮箱
        function isEmail(str){
            var reg = /^\w+@\w+\.\w+$]/
            return reg.test(str)
        }
    
    写一个函数isPhoneNum(str),判断用户输入的是不是手机号
        function isPhone(num){
            var reg = /^1\d{10}$/
            return reg.test(num)
        }
    
    写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
    function isValidUsername(str){
        var reg = /^\w{6,20}$/
        return reg.test(str)
    }
    
    写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,包括大写字母、小写字母、数字、下划线至少两种)
    function isValidPassword(str){
        var reg = /^\w{6,20}$/
        if(reg.test(str)){
            var i = 0;
            if(/[0-9]/.test(str)) i++;
            if(/[a-z]/.test(str)) i++;
            if(/[A-Z] /.test(str)) i++;
            if(/_/.test(str)) i++;
            if(i>1) return true;
            else return false
        }
            else return false
    }
    
    写一个正则表达式,得到如下字符串里所有的颜色(#121212)
    var reg = /#[0-9A-Fa-f]{6}/g;
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee #fd2 ";
    console.log(subj.match(reg));
    
    下面代码输出什么? 为什么? 改写代码,让其输出hunger, world.
    var str = 'hello  "hunger" , hello "world"';
    var pat =  /".*"/g;
    str.match(pat);  //输出[""hunger" , hello "world""]因为它是贪婪模式,所以将hunger跟world之间的hello也匹配上了
    

    改写

    var str = 'hello  "hunger" , hello "world"';
    var pat =  /".*?"/g;
    str.match(pat);
    
    补全如下正则表达式,输出字符串中的注释内容. (可尝试使用贪婪模式和非贪婪模式两种方法)
    str = '.. <!-- My -- comment \n test --> ..  <!----> .. '
    re = /.. your regexp ../
    
    str.match(re) // '<!-- My -- comment \n test -->', '<!---->'
    

    贪婪模式

    re = /<!--[^>]*-->/g
    

    非贪婪模式

    re = /<!--[\W\w]*?-->/
    
    补全如下正则表达式
    
    var re = /<[^>]+>/
    
    var str = '<> <a href="/"> <input type="radio" checked> <b>'
    str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'
    

    本文内容归本人和饥人谷所有,转载须说明来源

    相关文章

      网友评论

        本文标题:正则表达式

        本文链接:https://www.haomeiwen.com/subject/dnqqettx.html