JavaScript正則表達式

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

  • \d 表示數(shù)字字符
  • \w 表示文本字符童谒,字母塞帐、數(shù)字拦赠、下劃線(\W 大寫表示屬性相反的字符)
  • \s 匹配空格(包括制表符、空格符葵姥、斷行符等)荷鼠,相等于[\t\r\n\v\f]
  • [a-zA-Z0-9] 表示與(a到Z,A到Z榔幸,0-9的任何字符匹配)
  • \b 匹配詞的邊界
  • . 表示匹配任意字符 /c.b/ cab允乐、c7b、c-b都可進行匹配
    • 表示一個模式出現(xiàn)0次貨多次
    • 表示一個模式出現(xiàn)1次貨多次
  • 削咆?表示一個模式出現(xiàn)0次或者1次
  • x{3} 模式的精準匹配次數(shù){n}表示重復(fù)n次牍疏,{n,}表示至少重復(fù)n次拨齐,{n鳞陨,x}表示重復(fù)次數(shù)在n-x之間
  • ^ 例如 /^ab/ 表示以ab開頭的字符
  • $ 例如 /$cd/ 表示以cd結(jié)尾的字符

參考資料

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

貪婪和非貪婪模式是指字符串量詞在進行匹配時,貪婪模式按照最大可匹配數(shù)進行匹配奏黑,
而非貪婪模式匹配一次則就停止;如沒有進行說明编矾,默認是進行貪婪模式

3. 寫一個函數(shù)trim(str)熟史,去除字符串兩邊的空白字符

    function trim(str){
      return str.replace(/^\s+|\s+$/g,"");   
    }
    trim("  dff ")

4. 使用正則實現(xiàn) addClass(el, cls)、hasClass(el, cls)窄俏、removeClass(el,cls)

  function hasClass(el,cls){
      var reg=new RegExp(' "\\s|^"+cls+"\\b|$" ',"g");
      return reg.test(el.className)
    }
      if(reg.test(el.className)){
        console.log("has "+cls)
      }else{
        console.log("don't has "+cls)
      }

      function addClass(el,cls){
        var reg=new RegExp(' "\\s|^"+cls+"\\b|$" ',"g");
        return reg.test(el.className)
      }
        if(reg.test(el.className)){
          console.log("alread has "+cls)
        }else{
          console.log(el.className+cls)
        }

        function addClass(el,cls){
          var reg=new RegExp(' "\\s|^"+cls+"\\b|$" ',"g");
          return reg.test(el.className)
        }
          if(reg.test(el.className)){
            var new=el.className.replace(cls,"")
            console.log(new)
          }else{
            console.log("don't has "+cls)
          }

5. 寫一個函數(shù)isEmail(str)蹂匹,判斷用戶輸入的是不是郵箱

      function isEmail(str){
        var email=/\w{5,20}@\w{1,5}\.[^@]/;
        return email.test(str);
      }

6. 寫一個函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機號

      function isPhoneNum(str){
        var phonenum=/1[3578]\d{9}/
        return phonenum.test(str);
      }

7. 寫一個函數(shù)isValidUsername(str)凹蜈,判斷用戶輸入的是不是合法的用戶名(長度6-20個字符限寞,只能包括字母忍啸、數(shù)字、下劃線)

    function isValidUsername(str){
        var validname=/^\w{6,20}$/;
        return validname.test(str);
      }
QQ截圖20160912153425.png

8. 寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符履植,包括大寫字母计雌、小寫字母、數(shù)字玫霎、下劃線至少兩種)

      function isValidPassword(str){
       var reg = /^\w{6,20}$/,
           capital = /^[A-Z]{6,20}$/,
           lowercase = /^[a-z]{6,20}$/,
           digit = /^\d{6,20}$/,
           underline = /^_{6,20}$/; 
       if(reg.test(str)){
           if(capital.test(str) | lowercase.test(str) | digit.test(str) | underline.test(str)){
               return false;
           }else{
               return true;
           }
       }else{
           return false;
       }
      }

先判斷密碼是否是6-20個\w組成的字符凿滤,然后在判斷是否為單一的屬性

11. 寫一個正則表達式,得到如下字符串里所有的顏色(#121212)

    var re= /#[0-9a-zA-Z]{6}/g;
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee #fd2 ";
    alert(subj.match(re))

10. 下面代碼輸出什么? 為什么? 改寫代碼庶近,讓其輸出hunger, world

    var str = 'hello  "hunger" , hello "world"';  //非貪婪模式
    var pat =  /".*?"/g;
    str.match(pat);  
    
    var str = 'hello  "hunger" , hello "world"';  //貪婪模式
    var pat =  /"[^"]*"/g;
    str.match(pat);    

11. 補全如下正則表達式翁脆,輸出字符串中的注釋內(nèi)容

    str = '.. <!-- My -- comment \n test --> ..  <!----> .. ' //非貪婪模式
    var re = /<[^]*?>/g        
    str.match(re)  

    str = '.. <!-- My -- comment \n test --> ..  <!----> .. '//貪婪模式
    var re = /<[^<]*>/g    
    
    str.match(re)
 

12.補全如下正則表達式

    var re = /<\w[^]*?>/g
    var str = '<> <a href="/"> <input type="radio" checked> <b>'
    str.match(re)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鼻种,隨后出現(xiàn)的幾起案子反番,更是在濱河造成了極大的恐慌,老刑警劉巖叉钥,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罢缸,死亡現(xiàn)場離奇詭異,居然都是意外死亡沼侣,警方通過查閱死者的電腦和手機祖能,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛾洛,“玉大人养铸,你說我怎么就攤上這事≡欤” “怎么了钞螟?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谎碍。 經(jīng)常有香客問我鳞滨,道長,這世上最難降的妖魔是什么蟆淀? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任拯啦,我火速辦了婚禮,結(jié)果婚禮上熔任,老公的妹妹穿的比我還像新娘褒链。我一直安慰自己,他們只是感情好疑苔,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布甫匹。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兵迅。 梳的紋絲不亂的頭發(fā)上抢韭,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音恍箭,去河邊找鬼刻恭。 笑死,一個胖子當著我的面吹牛季惯,可吹牛的內(nèi)容都是我干的吠各。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼勉抓,長吁一口氣:“原來是場噩夢啊……” “哼贾漏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起藕筋,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤纵散,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后隐圾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伍掀,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年暇藏,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜜笤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡盐碱,死狀恐怖把兔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓮顽,我是刑警寧澤县好,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站暖混,受9級特大地震影響缕贡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拣播,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一晾咪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贮配,春花似錦谍倦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酣藻,卻和暖如春曹洽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辽剧。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工送淆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怕轿。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓偷崩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撞羽。 傳聞我的和親對象是個殘疾皇子阐斜,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容