能不能帮我捋一捋思路,硬是没看懂

能不能帮我捋一捋思路,硬是没看懂

var pattern = /<\/?[a-zA-Z]+(\s+[a-zA-Z]+=".*")*>/g;

var pattern = /<[^>]+>/g;

var pattern = /<(?:[^"'>]|"[^"]*"|'[^']*')*>/g;

var pattern = /<(?:[^"'>]|(["'])[^"']*\1)*>/g;

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,可以参考下面解释:
1、第一个

http://img1.sycdn.imooc.com/climg/5e14458a094ebbcb10530308.jpg

2、第二个是逆向思考,<>中的内容不可以包括>,一旦包括匹配就结束了。

http://img1.sycdn.imooc.com/climg/5e14461609e56a6105360124.jpg

3、正则可以分开来看:

http://img1.sycdn.imooc.com/climg/5e14465c093dc8e304090062.jpg

匹配引号外面的内容以及匹配引号里面的内容,引号可以是单引号或者双引号。

(1)首先是最外层左右的<>:

(2)[^"']中的^是取反,即不匹配双引号或者单引号,这样就可以匹配引号外面的内容

(3)“[^"]*”这是匹配双引号里面的内容,在双引号内容中不匹配双引号,否则就结束了,内容可以有多个,用*,意思是匹配前面的子表达式零次或多次, 等价于{0,}。

(4)'[^']*'这是匹配单引号里面的内容,在单引号内容中不匹配单引号,否则结束了,内容可以有多个,用*。

注:上面(2),(3),(4)是或的情况,因为不知道标签中是怎么写的,可能只有一个标签,也可能有属性,属性值可能用双引号或者单引号。

(5)将这三种情况分组,但是不用捕获输出,最后用*,可以多次匹配内容。

4、将第三种方式简化了:

http://img1.sycdn.imooc.com/climg/5e1447f709b3b0a810400183.jpg

自己可以再测试下,不难理解哦。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 迷失的小麦 提问者 #1
    3和4还是没看懂,3实现的思路是什么
    2020-01-07 21:22:52
  • 迷失的小麦 提问者 #2
    “[^"]*”找的是不是“包裹的非双引号内容并重复多次或一次,但是实际的结果是不是"包裹的“text”,而不是想要的结果,type=“text”
    2020-01-07 22:02:38
好帮手慕星星 2020-01-08 09:40:00

同学你好,问题解答如下:

1、3和4逻辑是一样的,找引号之间的内容以及引号之外的内容。

2、“[^"]*”匹配的是引号之间的内容,引号之间没有引号就可以,同学理解的没有问题。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师