本文借鉴参考原文如下
https://houdunren.gitee.io/note/js/14%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.html
是什么
为什么
怎么做
案例一:
let hd = `
\#1 js,200元 \#
\#2 php,300元 \#
\#9 houdunren.com \# 后盾人
\#3 node.js,180元 \#
`;
要求:取出模板字符串中的名称及价格,以键值对的形式放入对象中输出
<script>
let hd = `
#1 js,200元 #
#2 php,300元 #
#9 houdunren.com # 后盾人
#3 node.js,180元 #
`;
//console.log(hd.match(/\s*#\d+\s+.+\s+#/g)[0]);
//输出:
// #1 js,200元 #
// #
//问题出现在了.+包括了空格和#,所以后面的\s+匹配了换行,最后的#就匹配到了下一行的换行
//console.log(hd.match(/\s*#\d+\s+.+\s+#\s+/gm));
//
//这样做会把 #9 houdunren.com # 后盾人 也匹配到
//console.log(hd.match(/^\s*#\d+\s+.+\s+#$/gm));
let lessons = hd.match(/^\s*#\d+\s+.+\s+#$/gm).map(v => {
v = v.replace(/\s*#\d+\s*/, "").replace(/\s+#/, "");
[name, price] = v.split(",");
return { name, price };
});
console.log(JSON.stringify(lessons, null, 2));
</script>