Discuss / JavaScript / 作业

作业

Topic source

徐万林

#1 Created at ... [Delete] [Delete and Lock User]

var list = document.querySelector("#test-list"); var arr = list.innerHTML.match(/(<.+?>)(.+?)(<.+?>)/g); list.innerHTML=arr.sort().join("")

mov1er

#2 Created at ... [Delete] [Delete and Lock User]

请问为什么要加?啊,?匹配的是哪个啊,“.”吗?

菠萝borrow

#3 Created at ... [Delete] [Delete and Lock User]

str是让.+的搜索模式从贪婪模式变成惰性模式。

var str = 'aaa<div style="font-color:red;">123456</div>bbb' <.+?>会匹配<div style="font-color:red;">和</div> <.+>会匹配<div style="font-color:red;">123456</div>

要在浏览器测试的话,输入: str.match(/<.+?>/); str.match(/<.+>/)

加疑问号是让默认的贪婪匹配变成惰性匹配。 (.+)默认是贪婪匹配。

下面举个简单的例子来说明。

1.贪婪匹配是先看整个字符串是否匹配,如果不匹配,它会去掉字符串的最后一个字符,并再次尝试。如果还不匹配,那么再去掉当前最后一个,直到发现匹配或不剩任何字符。

var str='abcdabceba' /.+b/ //匹配一个或多个任意字符后面跟一个字母b

执行str.match(/.+b/)

第一次(先看整个字符串是否是一个匹配) abcdabceba 不匹配,然后去掉最后一个字符a 第二次(去掉最后一个字符后再匹配) abcdabceb 正确退出。

2.惰性匹配是从左侧第一个字符开始向右匹配, 先看第一个字符是不是一个匹配, 如果不匹配就加入下一个字符再尝式匹配, 直到发现匹配...

执行str.match(/.+?b/)

第一次(读入左侧第一个字符) a 不匹配加一个再式 第二次 ab 匹配,返回ab

浩东f

#4 Created at ... [Delete] [Delete and Lock User]
var list = document.querySelector("#test-list");
var arr = list.innerHTML.match(/(<.+?>)(.+?)(<.+?>)/g);
arr.sort();

调试了,发现改成这样也可以 是因为arr排序后,list.innerHTML也改变了吗?

浩东f

var list = document.querySelector("#test-list"); var arr = list.innerHTML.match(/(<.+?>)(.+?)(<.+?>)/g); arr.sort(); 调试了,发现改成这样也可以 是因为arr排序后,list.innerHTML也改变了吗?

你这个应该是先 运行了楼主的正确的程序,然后在他的基础上 删除部分语句运行的, 而实际上浏览器是有缓存的,并非执行的是你的这段程序,而仍然是楼主的正确的程序,你可以重新打开页面 直接运行你的程序,绝对不行

WLL浅

#6 Created at ... [Delete] [Delete and Lock User]

var list = document.querySelector("#test-list"); var arr = list.innerHTML.match(/(<.+>)(.+)(<.+>)/g); list.innerHTML=arr.sort().join("") 为啥删除?号也能成功


  • 1

Reply