美文网首页
正则表达式任务

正则表达式任务

作者: 辉夜乀 | 来源:发表于2017-04-17 13:15 被阅读28次

    题目1:

    \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?

    • \d 表示数字,等价[0-9]
    • \w 表示字符、字母、数字、下划线,等价 [a-zA-Z_0-9]
    • \s 表示空白符,等价[\t\n\x0B\f\r]
    • [a-zA-Z0-9] 表示小写字母、大写字母、数字
    • \b 表示单词边界
    • . 表示除了回车符、换行符之外的所有字符,等价 [^\r\n]
    • * 表示 0 次或多次,等价 {0,}
    • + 表示 1 次或多次,等价 {1,}
    • ? 表示 0 次或 1 次,等价 {0,1}
    • x{3} 表示 xxx,即 x 出现3次
    • ^ 表示开头
    • $ 表示结尾

    题目2:

    写一个函数trim(str),去除字符串两边的空白字符

    function trim(str){
      return str.replace(/^\s+|\s+$/g,"");
    }
    
    var str = "   che  ng  ong    ";
    trim(str);    // "che  ng  ong"
    

    题目3:

    写一个函数isEmail(str),判断用户输入的是不是邮箱

    function isEmail(str){
      var reg = /^[\w|-]+@\w+\.com$/;
      return reg.test(str);
    }
    
    var str = "chengong-123@163.com";
    isEmail(str);   // true
    

    题目4:

    写一个函数isPhoneNum(str),判断用户输入的是不是手机号

    function isPhoneNum(str){
      var reg = /^(\+86)?-1[358]\d{9}$/;
      return reg.test(str);
    }
    
    var str = "+86-13123456789";
    isPhoneNum(str);    // true
    

    题目5:

    写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)

    function isValidUsername(str){
      var reg = /^\w{6,20}$/;
      return reg.test(str);
    }
    
    var str = "chengong_jirengu"
    isValidUsername(str)    // true
    

    题目6:

    写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少包括两种)

    function isValidPassword(str){
      var reg = /^\w{6,20}$/;
      if( reg.test(str)===false ){
        return false;
      }else if( /^[A-Z]{6,20}$/.test(str)===true ){
        return false;
      }else if( /^[a-z]{6,20}$/.test(str)===true ){
        return false;
      }else if( /^\d{6,20}$/.test(str)===true ){
        return false;
      }else if( /^-{6,20}$/.test(str)===true ){
        return false;
      }else{
        return true;
      }
    }
    
    isValidPassword("Chengong_jirengu123")    // true
    isValidPassword("chengong")    // false
    
    
    ---------------这种方法不好,如果至少包括3种,4种就麻烦了,换下面这种方法--------------
    
    function isValidPassword(str){
      var reg = /^\w{6,20}$/;
      var count = 0;
      if(/[A-Z]/.test(str)){
        count++;
      }
      if(/[a-z]/.test(str)){
        count++;
      }
      if(/[0-9]/.test(str)){
        count++;
      }
      if(/_/.test(str)){
        count++;
      }
      return (count>=2 && reg.test(str));
    }
    
    
    isValidPassword("Chengong_jirengu123");    // true
    isValidPassword("chengong");    // false
    

    题目7:

    写一个正则表达式,得到如下字符串里所有的颜色

    var re = /#[0-9a-fA-F]{6}/g
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
    console.log( subj.match(re) )  // ['#121212', '#AA00ef']
    

    题目8:

    下面代码输出什么? 为什么? 改写代码,让其输出[""hunger"", ""world""].

    var str = 'hello  "hunger" , hello "world"';
    var pat =  /".*"/g;
    str.match(pat);   
    /* [""hunger" , hello "world""]  
    默认情况是贪婪模式,符合条件的.*最大范围是hunger" , hello "world
    */
    
    var pat2 = /".*?"/g
    str.match(pat2)  
        // [""hunger"", ""world""] 改成非贪婪模式
    

    相关文章

      网友评论

          本文标题:正则表达式任务

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