...这个正则
来源:6-11 parse(7)

旋涡鸣人_
2019-02-03
const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/
"+| 这个 地方的 加号有啥用啊 表示可以输入多个引号 ? 怪异啊
写回答
2回答
-
Arey_jy
2019-02-06
举个栗子:
// 当前处理的字符串 var str = 'v-for="item in data"" class="some-class"' // 如果去掉正则中的 + 符号,匹配后会怎么样? const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`])))?/
console.log(str.match(attribute)) // 第一次进行匹配到的字符为:'v-for="item in data"' // 那么此时 str 剩余的字符为:'" class="some-class"'
// 在次 while 进行调用 match 匹配时,此次则返回的为 null,因为正则中第一个分组是不能为 " 符号的 console.log(str.match(attribute))
所有必须要匹配 一项或者是多项( " ' ),否则会影响后续解析
212019-02-11 -
ustbhuangyi
2019-02-06
这个 html parser 是很早之前大神 John Resig 写的,不过我也觉得这个 + 没啥必要,如上面同学举的例子,我觉得连续写多个 " 也并没有什么意义的。
00
相似问题