美文网首页
任务21 正则表达式-代码题

任务21 正则表达式-代码题

作者: GarenWang | 来源:发表于2016-11-17 00:03 被阅读0次

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

  function time(str){
    return str.replace(/^\s+|\s+$/g,"")
  }
var str="  abc degh  ilkm  "
console.log(time(str))//"abc degh  ilkm"

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

<div id="div1" class="color border"></div>
<script type="text/javascript">
  var div=document.getElementById("#div1");
function hasClass(el,cls){
    var reg=new RegExp("(\\s|^)"+cls+"(\\s|$)","g")
    // (\\s表示空白字符)
    return reg.test(el.className)
}
function addClass(el,cls){
    if(!hasClass(el,cls)){
        el.className+=" "+cls
    }
}
function removeClass(el,cls){
    if(hasClass(el,cls)){
        el.className=el.className.replace(cls,"").replace(/\s{2,}/g,"")
    }
}
hasClass(div1,"color")//true
hasClass(div1,"bg-color")//false
addClass(div1,"fontsize")//undefined
div1.className//"color border fontsize"
removeClass(div1,"color")//undefined
div1.className//"border fontsize"
</script>

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

function isEmail(str){
    var reg=/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/;
    if (reg.test(str)) {
        return str
    }else{
        alert("请输入正确的邮箱格式")
    }
}
isEmail("aaa")//"请输入正确的邮箱格式"
isEmail("2270099149@qq.com")//"220099149@qq.com"

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

function isPhoneNum(str){
    var reg=/^1[0-9]{10}$/;
    if (reg.test(str)) {
        return str
    }else{
        alert("请输入正确的手机号")
    }
}
var str="111100001111"
isPhoneNum(str)//输出:"请输入正确的手机号"
var str="13656576666"
 isPhoneNum(str)//输出:"13656576666"

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

function isValidUsername(str){
    var reg=/^\w{6,20}$/
    if (reg.test(str)) {
        return str
    }else{
        alert("请输入正确的用户名")
    }
}

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

function isValidPassword(str){
        var reg=/^\w{6,20}$/;
        var reg1=/(^[a-z]+$)|(^[A-Z]+$)|(^[0-9]+$)|(^_+$)/;
        if (reg.test(str)) {
            if(reg1.test(str)){
             alert("亲,请输入正确的密码(字母、数字、下划线,至少包含其中两种)")
            }else{
                alert("设置成功");
            }
        }else{
            alert("亲,请输入正确的密码(长度6-20)")
        }
    }

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

var re = /#[e-fA0-2]{6}/g;
var subj = "color: #121212; background-color: 
                  #AA00ef;     width: 12px; bad-colors: f#fddee #fd2 ";
    alert( subj.match(re) )  // #121212,#AA00ef

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);//[""hunger"", ""world""]

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

  • 贪婪模式

    str = '.. <!-- My -- comment \n test --> ..  <!----> .. '
      re = /<!--[\w\W]*?-->/g
      str.match(re) // '<!-- My -- comment \n test -->', '<!---->'
    
  • 非贪婪模式

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

10.补全如下正则表达式

var re = /<[a-z][\w\W]*?>/g
    var str = '<> <a href="/"> <input type="radio" checked> <b>'
    str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'

相关文章

网友评论

      本文标题:任务21 正则表达式-代码题

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