一个正则匹配的面试题

发布于 2022-09-11 18:30:40 字数 954 浏览 15 评论 0

题目描述

抽取 markdown 中的关键字符串 :::demo 和 ::: 里面的内容,返回匹配到的数组

// demo.md
# demo
::: demo
<template>
  <div class="box-vuea">Vue {{ message2 }}</div>
</template>
<script>
export default {
  data: () => ({ message2: 'Hello World 2' })
}
</script>
<style>
.box-vuea { color: blue; }
</style>
:::

::: demo
<template>
  <div class="box-vuea">Vue {{ message2 }}</div>
</template>
<script>
export default {
  data: () => ({ message2: 'Hello World 2' })
}
</script>
<style>
.box-vuea { color: blue; }
</style>
:::

题目来源及自己的思路

我写了两个都不适合,不知道哪里错了

/::: demo[^(:::)]*:::/g 

返回 null

/::: demo[\s\S]*:::/g 

返回了整个大段 '::: demo (片段1) ::: (...) ::: demo (片段2) :::'

你期待的结果是什么?实际看到的错误信息又是什么?

我想要返回:

[
    '::: demo (片段1) ::: ',
    '::: demo (片段2) ::: '
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

酸甜透明夹心 2022-09-18 18:30:40
::: demo([\s\S]+?):::

点击查看

别靠近我心 2022-09-18 18:30:40
(:::\s\w+\n[\s\S]+?\n:::)
心的位置 2022-09-18 18:30:40

这样用就行了:

var reg = new RegExp(/::: demo([\s\S]*):::/g);
reg.exec(str);    // str 为去要匹配的字符串

console.log(RegExp["$1"]);
console.log(RegExp["$2"]);

了解一下用法:https://developer.mozilla.org...
clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文