能不能帮我捋一捋思路,硬是没看懂
var pattern = /<\/?[a-zA-Z]+(\s+[a-zA-Z]+=".*")*>/g;
var pattern = /<[^>]+>/g;
var pattern = /<(?:[^"'>]|"[^"]*"|'[^']*')*>/g;
var pattern = /<(?:[^"'>]|(["'])[^"']*\1)*>/g;
44
收起
正在回答
2回答
同学你好,可以参考下面解释:
1、第一个
2、第二个是逆向思考,<>中的内容不可以包括>,一旦包括匹配就结束了。
3、正则可以分开来看:
匹配引号外面的内容以及匹配引号里面的内容,引号可以是单引号或者双引号。
(1)首先是最外层左右的<>:
(2)[^"']中的^是取反,即不匹配双引号或者单引号,这样就可以匹配引号外面的内容
(3)“[^"]*”这是匹配双引号里面的内容,在双引号内容中不匹配双引号,否则就结束了,内容可以有多个,用*,意思是匹配前面的子表达式零次或多次, 等价于{0,}。
(4)'[^']*'这是匹配单引号里面的内容,在单引号内容中不匹配单引号,否则结束了,内容可以有多个,用*。
注:上面(2),(3),(4)是或的情况,因为不知道标签中是怎么写的,可能只有一个标签,也可能有属性,属性值可能用双引号或者单引号。
(5)将这三种情况分组,但是不用捕获输出,最后用*,可以多次匹配内容。
4、将第三种方式简化了:
自己可以再测试下,不难理解哦。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星