大家好,我是大家熟悉的小编,易学前端笔记,今天给大家分享的是,JSJS正则表达式
最近在做正则表达式的习题,题目本身不难,但我做完习题后难免脑洞大开举一反三,而这次,被我自己的脑洞难住了。
题目如下:当你收到一串HTML代码,需要对这一串HTML代码过滤,将里面所有的非
标签都改为
标签
因此一般解题的代码为:
二、疑问
我不禁产生疑问:如果将reg改为:
按照逻辑分析来说,结果也是一样的。但是,结果却大跌眼镜:
可以看出,位于第二项的“
”变成了“”。如果从逻辑上分析,如果“
三、分析
可以看出,位于第二项的“
”:“”对应“>”。可见,正则表达式按照字符匹配,先匹配"”。
其中,造成以上疑问的罪魁祸首是“?”,看看词条的解释:“? Quantifier — Matches between zero and one times, as many times as possible, giving back as needed (greedy)”。意思是:在“/”出现0次或1次这两种情况下匹配,判断各情况下的匹配情况,然后返回符合匹配且是贪婪匹配的情况(默认情况下是贪婪匹配)
四、总结
正则表达式的基本语法、属性与方法、分组与捕获、引用与反向引用、贪婪匹配与惰性匹配、正向前瞻与负向前瞻、String方法的正则用法等,需要在理解的基础上,融会贯通,才能更好的掌握。
好了今天的内容就分享到这里~~
閱讀更多 易學前端筆記 的文章