JavaScript 列表的 RegExp 问题

JavaScript RegExp issue with lists

人! 我有一个问题,我不知道如何用 ul、li 标签替换我的文本。

这是: 我有这样的文字,例如:

let text = "Du bist der beste Mensch";

我需要将“der beste Mensch”部分转换为:

<ul>
 <li>der<li>
 <li>beste<li>
 <li>Mensch<li>
</ul>

所以一般的输出应该是:

杜比斯特

我尝试使用正则表达式,结果是:

text.replace(/(?:^|\n)- (\S+)/g, '<li></li>');

如果我输入 <ul><li></li></ul>,它当然会给我那些包含在 ul 和 li 标签中的单词,这不是我想要的。

假设原文是这样的格式:

Du bist 
- der
- beste
- Mensch

您可以将 replace 嵌套为 2 个步骤:

  1. 替换 <ul> 标签内的整个列表
  2. 替换 <li> 标签内的每个列表项

const text = `Du bist 
- der
- beste
- Mensch
`;

const result = text.replace(/(?:(?:^|\n+)- [^\n]+)+/g, 
  list => `<ul>${list.replace(/(?:^|\n+)- ([^\n]+)/g, '<li></li>')}</ul>`
);

console.log(result);