还是没听懂,怎么办,能不能用最简单(不专业)的方法跟我说说原因
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 星