大家好,我是大家熟悉的小編,易學前端筆記,今天給大家分享的是,JSJS正則表達式
最近在做正則表達式的習題,題目本身不難,但我做完習題後難免腦洞大開舉一反三,而這次,被我自己的腦洞難住了。
題目如下:當你收到一串HTML代碼,需要對這一串HTML代碼過濾,將裡面所有的非
標籤都改為
標籤
因此一般解題的代碼為:
二、疑問
我不禁產生疑問:如果將reg改為:
按照邏輯分析來說,結果也是一樣的。但是,結果卻大跌眼鏡:
可以看出,位於第二項的“
”變成了“”。如果從邏輯上分析,如果“
三、分析
可以看出,位於第二項的“
”:“”對應“>”。可見,正則表達式按照字符匹配,先匹配"”。
其中,造成以上疑問的罪魁禍首是“?”,看看詞條的解釋:“? Quantifier — Matches between zero and one times, as many times as possible, giving back as needed (greedy)”。意思是:在“/”出現0次或1次這兩種情況下匹配,判斷各情況下的匹配情況,然後返回符合匹配且是貪婪匹配的情況(默認情況下是貪婪匹配)
四、總結
正則表達式的基本語法、屬性與方法、分組與捕獲、引用與反向引用、貪婪匹配與惰性匹配、正向前瞻與負向前瞻、String方法的正則用法等,需要在理解的基礎上,融會貫通,才能更好的掌握。
好了今天的內容就分享到這裡~~
閱讀更多 易學前端筆記 的文章