任務21 正則表達式-代碼題

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>'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容