还是没听懂,怎么办,能不能用最简单(不专业)的方法跟我说说原因
55
收起
正在回答
3回答
同学你好,弥补漏掉的意思就是,标签中的属性可以使用单引号,也可以使用双引号。如果只单纯的验证单引号,那么双引号的情况就遗漏了。["']这个规则既可以匹配出双引号,也可以匹配单引号。
定义一个字符串,如果使用了双引号,那么标签中属性值的引号就要使用单引号。

如果字符串使用了单引号,则属性值要使用双引号。
通俗的讲,["']就是匹配‘text’和“text” 这两种情况。
另外,在实际工作中, 匹配标签也不是常见的应用。如果实在理解不了,建议往下学习。如果浪费太多时间,会影响学习效率。合理安排学习时间哦
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
我学习太差被关起来了
2020-01-10 16:06:00
HTML标签匹配是很常用的,不是很难。我的笔记如下:
// demo 1
// 开始标签是<>,结束标签是</>,因此"<"后面的"/"出现0次或1次,使用?量词
// 标签名:[a-zA-Z]+
// 标签名后面是:属性="属性值"或属性='属性值'
// 空格可能有若干个,因此\s+
// 属性名:[a-zA-Z]+
// let regExp1 = /<\/?[a-zA-Z]+(?:\s+[a-zA-Z]+=('|").*\1)*\s*>/g;
// 该正则表达式有局限性
//
// let str = '<p class="odd" id="oddNumber">123</p>';
// console.log(str.match(regExp1));
//
// str = "<p class='odd' id='oddNumber' >123</p>";
// console.log(str.match(regExp1));
//
// str = '<input class="even odd" value="<>" id="oddNumber_evenNumber" >123</input>';
// console.log(str.match(regExp1));
//
// str = '<form action="index.html" class="odd" method="post"><input type="text" value=""></form>';
// console.log(str.match(regExp1));
// 局限性:不能把<input>标签匹配出来
// demo 2
// 以<p class="odd" id="oddNumber">123</p>为例说明
// 标签以"<"开始,以">"结束
// 标签内的组成:要么是双引号和单引号括起来的内容(属性值),要么是双引号和单引号没有括起来的内容
// 对于双引号和单引号没有括起来的内容,它们不是单引号、双引号、左右尖括号,因此是[^'"<>]
// 对于双引号括起来的内容(属性值),它们不能是双引号和单引号,因此是"[^"']*"
// 对于单引号括起来的内容(属性值),它们不能是双引号和单引号,因此是'[^"']*'
// let regExp2 = /<(?:[^'"<>]|"[^"']*"|'[^"']*')*>/g;
// 下面的regExp3与上面的regExp2是等价的
let regExp3 = /<(?:[^'"<>]|(["'])[^"']*\1)*>/g;
let str = '<p class="odd" id="oddNumber">123</p>';
console.log(str.match(regExp3));
str = "<p class='odd' id='oddNumber'>123</p>";
console.log(str.match(regExp3));
str = '<input class="even odd" value="<>" id="oddNumber_evenNumber" >123</input>';
console.log(str.match(regExp3));
str = '<form action = "index.html" class = "odd" method="post"><input type="text" value="<>"></form>';
console.log(str.match(regExp3));
// 匹配到3个结果,分别是
// <form action="index.html" class="odd" method="post">
// <input type="text" value="<>">
// </form>
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星