还是没听懂,怎么办,能不能用最简单(不专业)的方法跟我说说原因

还是没听懂,怎么办,能不能用最简单(不专业)的方法跟我说说原因

正在回答

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

3回答

同学你好,弥补漏掉的意思就是,标签中的属性可以使用单引号,也可以使用双引号。如果只单纯的验证单引号,那么双引号的情况就遗漏了。["']这个规则既可以匹配出双引号,也可以匹配单引号。

定义一个字符串,如果使用了双引号,那么标签中属性值的引号就要使用单引号。

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

如果字符串使用了单引号,则属性值要使用双引号。http://img1.sycdn.imooc.com//climg/5e193b0909a421c307240037.jpg

通俗的讲,["']就是匹配‘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
    兄弟,可能是我水平太差,没找到想要的答案,我想要的是为什么讲["']进行分组,就能弥补漏洞:[^"']排除了所有的单引号和双引号,而双引号里可以有单引号,单引号里可以有双引号
    2020-01-11 10:32:54
  • 弥补漏洞的意思是,标签中的属性可以使用单引号,也可以使用双引号。如class="odd"和class'odd',都可以。
    2020-01-11 20:38:53
好帮手慕夭夭 2020-01-10 15:33:53

同学你好,看这个问题同学已经问了很多次了,答疑老师解释的已经很通俗详细了。可能同学这几天学正则有一点混乱,思维陷在某一个地方理解不了。这块内容不重要,不用浪费太多的精力去研究。可以先往下学习其他的,等过一段时间再回顾这个问题哦。

祝学习愉快!

  • 提问者 迷失的小麦 #1
    真正的匹配是从内容(<input...)开始匹配的,匹配的的内容中不会出现单双引号嵌套(不符合语法)的情况,所以同学考虑的事情不会发生。是要理解这句话吗
    2020-01-10 15:46:47
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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