美文网首页
正则表达式

正则表达式

作者: JunVincetHuo | 来源:发表于2016-11-02 11:34 被阅读0次

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

    • \d :查找数字
    • \w:查找单词字符(字母,数字,下划线)
    • [a-zA-Z0-9]: a-z A-Z 0-9的字符
    • \b:单词边界(设在前面就是开头,后面就是结尾)
    • . : 任何字符(除换行)
    • *:贪婪模式,表示匹配任何包含零个或多个 n 的字符串
    • +:表示匹配任何包含至少一个 n 的字符串
    • ?: 非贪婪模式,表示匹配任何包含零个或一个 n 的字符串
    • x{3} 匹配长度至少为3个x的字符串
    • ^$ : 匹配开头为$的字符串

    2. 贪婪模式和非贪婪模式指什么?

    贪婪模式指的是正则表达式在满足条件的情况下,尽可能多的去匹配项。
    例如指{n,m}、+、*
    非贪婪模式指的是尽可能少的去匹配,在正则表达式后面用?表示

    代码

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

    function trim(str){
      return str.replace (/^\s+|\s+$/g,'');
      
    
    task-21-1测试结果.png

    ** 2.使用实现 addClass(el, cls)、hasClass(el, cls)、removeClass(el,cls),使用正则**

    function hasClass(el,cls){
      var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)','g');  
      return reg.test(el.className)
    function addClass(el,cls){
       var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)','g'); 
       if(!hasClass(el,cls){
        return el.className+''+cls
      }
    }
    function removeClass(el,cls){
       var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)','g');  
       if(!hasClass(el,cls){
        return el.className.replace(cls,'');
      }
    }
    console.log(hasClass(obj,'abc'));
    console.log(addClass(obj,'abc'));
    console.log(removeClass(obj,'hello'));  
    

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

    function isEmail(str){
      var patt = /\S+@\S+\.\S/  //这里的\.是为了转义,单纯的匹配一个.
      retrun patt.test(str)
    
    task-21-3测试结果.png

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

    function isPhoneNum(str){
      var patt = /^1[0-9]{10}$/
      return patt.test(str)
    
    task-21-4.png

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

    function isValidUsername(str){
      var patt = /^\w{6,20}$/
      retrun patt.test(str)
    
    task-21-5测试结果.png

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

    function isValidPassword(str){
      var patt = /^\w{6,20}$/;
      if(!patt.test(str){
        return '这不是合法密码!'
        }
    if (/(^[A-Z]+$)|(^[a-z]+$)|(^[0-9]+$)|(^_+$)/g.test(str)){
      return '这不是合法密码!'
     }
    return '输入正确'
    }
    var str = 'abcabcabc';
    console.log(isValidPassword(str));
    str = 'abc';
    console.log(isValidPassword(str));
    str = 'abc2314__';
    console.log(isValidPassword(str));
    
    task-21-6测试结果.png

    7.写一个正则表达式,得到如下字符串里所有的颜色(#121212)

    var re = /#[A-f0-9]{6}/
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; 
    bad-colors: f#fddee #fd2 "
    alert( subj.match(re) ) // #121212,#AA00ef
    
    task-21-7测试结果.png

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

    var str = 'hello "hunger" , hello "world"';
    var pat = /".*"/g;
    str.match(pat); 
    

    这个代码输出了"hunger",hello,"world",因为.代表的是任何字符,而*这个代表的是多次匹配,也就是贪婪模式
    我们可以修改成非贪婪模式,让他输出成hunger, world

    var str = 'hello "hunger",hello "world";
    var pat = /".*?"/g;
    str.match(pat);
    
    task-21-8测试结果.png

    9.补全如下正则表达式,输出字符串中的注释内容. (可尝试使用贪婪模式和非贪婪模式两种方法)

    str = '.. <!-- My -- comment \n test --> .. <!----> .. '
    re = /<!--[\w\W]*?-->/g;
    str.match(re) // '<!-- My -- comment \n test -->', '<!---->'
    

    10.补全如下正则表达式

    var re = /<^[<>]+>/g // [^<>]的意思是查找任何不在方括号之间的字符,这里是补全的代码
    var str = '<> <a href="/"> <input type="radio" checked> <b>'
    str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'
    
    task-21-10测试结果.png

    相关文章

      网友评论

          本文标题:正则表达式

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