正則表達(dá)式

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

\d:數(shù)字字符胁镐,等價(jià)于[0-9]
\w:?jiǎn)卧~字符参袱,字母相味、數(shù)字、下劃線爷狈,等價(jià)于[a-zA-Z0-9_]
\s: 空白符植影,等價(jià)于[\t\n\x0B\f\r]
\b:?jiǎn)卧~邊界
.: 除了回車符和換行符之外的所有字符,等價(jià)于[^\r\n]
*:出現(xiàn)零次或多次(任意次)
+:出現(xiàn)一次或多次
?:出現(xiàn)零次或一次
x{3}:x必須出現(xiàn)3次
^: 首匹配
$: 尾匹配

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

貪婪模式:指 {n,m}涎永、?思币、+、* 這些在默認(rèn)情況下都是盡最大可能地匹配羡微,直到下一個(gè)字符不滿足匹配規(guī)則為止

非貪婪模式與貪婪模式相反谷饿,即盡可能少地匹配,在正則表達(dá)式的量詞后面添加個(gè) ? 即可

代碼

1. 寫一個(gè)函數(shù) trim(str)妈倔,去除字符串兩邊的空白字符

        var str = "   hello world  ";
        // 方法 1
        function trim(str){
            var pattern = /\b.+\b/g;
            var result = pattern.exec(str);
            return result;
        }
        // 方法 2
        function trim(str){
            var pattern = /^\s*(.+?)\s*$/g;
            var result = pattern.exec(str)[1];
            var result = str.replace(pattern,"$1");
            return result;
        }
        // 方法 3
        function trim(str){
            var pattern = /^\s*|\s*$/g;
            return str.replace(pattern,'');
        }
代碼1.png

2. 使用實(shí)現(xiàn) addClass(el, cls)博投、hasClass(el, cls)removeClass(el, cls)启涯,使用正則表達(dá)式

        var preClass = "hello world";
        function addClass(preClass, appendClass){
            var pattern = new RegExp(appendClass,"gi");
            if(pattern.test(preClass)){
                return preClass;
            }else{
                return preClass.concat(" ", appendClass);
            }
        }
        function hasClass(preClass, testClass){
            var pattern = new RegExp(testClass,"gi");
            if(pattern.test(preClass)){
                console.log("已存在該 Class");
            }else{
                console.log("不存在該 Class");
            }
        }
        function removeClass(preClass, reduceClass){
            var pattern = new RegExp("\\s*\\b" + reduceClass + "\\b\\s*","gi");
            if(pattern.test(preClass)){
                return preClass.replace(pattern,"");
            }else{
                return preClass;
            }
        }
代碼2.png

3. 寫一個(gè)函數(shù) isEmail(str)贬堵,判斷用戶輸入是不是郵箱

        var email = "hellowold.com@gmail.com";
        function isEmail(str){
            var pattern = /^([\w\.\-]+)@([a-zA-Z0-9]+)\.([a-zA-Z]{2,4})$/;
            if(pattern.test(str)){
                console.log("這是郵箱");
            }else{
                console.log("這不是郵箱");
            }
        }
代碼3.png

4. 寫一個(gè)函數(shù) isPhoneNumber(str),判斷用戶輸入是不是手機(jī)號(hào)

        var phoneNumber = "13712345678";
        function isPhoneNumber(str){
            var pattern = /^1([3-9]){2}\d{8}$/g;
            if(pattern.test(str)){
                console.log("這是手機(jī)號(hào)碼");
            }else{
                console.log("這不是手機(jī)號(hào)碼");
            }
        }
代碼4.png

5. 寫一個(gè)函數(shù) isValidUsername(str)结洼,判斷用戶輸入是不是合法的用戶名(長(zhǎng)度6-20個(gè)字符黎做,只能包括字母、數(shù)字松忍、下劃線)

        var userName = "username_1";
        function isValidUsername(str){
            var pattern = /^\w{6,20}/g;
            if(pattern.test(str)){
                console.log("這是合法用戶名");
            }else{
                console.log("這不是合法用戶名");
            }
        }
代碼5.png

6. 寫一個(gè)函數(shù) isValidPassword(str)蒸殿,判斷用戶輸入是不是合法的密碼(長(zhǎng)度6-20個(gè)字符,包括大寫字母鸣峭、小寫字母宏所、數(shù)字、下劃線至少兩種)

    function isValidPassword (str){
        if(str.match(/^(?!^\d+$)(?!^[A-Z]+$)(?!^[a-z]+$)(?!^[_]+$).{6,20}$/) && str.match(/^\w{6,20}$/)) {
           console.log("這是合法密碼");
        }else{
           console.log("這不是合法密碼");
        }
    }
代碼6.png

7. 寫一個(gè)正則表達(dá)式摊溶,得到如下字符串里所有的顏色(#121212)

        var re = /(\#[0-9a-fA-F]{6})|(\#[0-9a-fA-F]{3})/g;
        var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: #ffddee #fd2 ";
        console.log( subj.match(re) );
代碼7.png

8. 下面代碼輸入什么爬骤?為什么?改寫代碼莫换,讓其輸出 hunger霞玄,world

        var str8 = 'hello  "hunger" , hello "world"';
        var pattern8 = /".*?"/g;
        console.log( str8.match(pattern8) );

如果不加 ?,則是貪婪模式拉岁,直接匹配到最后坷剧。

代碼8_1.png
代碼8_2.png

9. 補(bǔ)全如下正則表達(dá)式,輸出字符串中的注釋內(nèi)容喊暖。(可嘗試使用貪婪模式和非貪婪模式兩種方法)

        var str9 = '.. <!-- My -- comment \n test --> ..  <!----> .. ';
        // 貪婪模式
        var pattern9_1 = /<!--[^>]*-->/g;
        // 非貪婪模式
        var pattern9_2 = /<!--[\w\W]*?-->/g;
        console.log( str9.match(pattern9_1) );
        console.log( str9.match(pattern9_2) );
代碼9.png

10. 補(bǔ)全如下正則表達(dá)式

        var str10 = '<> <a href="/"> <input type="radio" checked> <b>';
        // '<a href="/">', '<input type="radio" checked>', '<b>'
        // 貪婪模式
        var pattern10_1 = /<[^>]+>/g;
        console.log(str10.match(pattern10_1));
        // 非貪婪模式
        var pattern10_2 = /<[\w].*?>/g;
        console.log(str10.match(pattern10_2));
代碼10.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惫企,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子陵叽,更是在濱河造成了極大的恐慌狞尔,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咨跌,死亡現(xiàn)場(chǎng)離奇詭異沪么,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锌半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門禽车,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刊殉,你說我怎么就攤上這事殉摔。” “怎么了记焊?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵逸月,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我遍膜,道長(zhǎng)碗硬,這世上最難降的妖魔是什么瓤湘? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮恩尾,結(jié)果婚禮上弛说,老公的妹妹穿的比我還像新娘。我一直安慰自己翰意,他們只是感情好木人,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冀偶,像睡著了一般醒第。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上进鸠,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天稠曼,我揣著相機(jī)與錄音,去河邊找鬼客年。 笑死蒲列,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的搀罢。 我是一名探鬼主播蝗岖,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼榔至!你這毒婦竟也來了抵赢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤唧取,失蹤者是張志新(化名)和其女友劉穎铅鲤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枫弟,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邢享,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淡诗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骇塘。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖韩容,靈堂內(nèi)的尸體忽然破棺而出款违,到底是詐尸還是另有隱情,我是刑警寧澤群凶,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布插爹,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赠尾。R本人自食惡果不足惜力穗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望气嫁。 院中可真熱鬧睛廊,春花似錦、人聲如沸杉编。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)邓馒。三九已至,卻和暖如春蛾坯,著一層夾襖步出監(jiān)牢的瞬間光酣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工脉课, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留救军,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓倘零,卻偏偏與公主長(zhǎng)得像唱遭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呈驶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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