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 个步骤:
- 替换
<ul>
标签内的整个列表
- 替换
<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);
人! 我有一个问题,我不知道如何用 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 个步骤:
- 替换
<ul>
标签内的整个列表 - 替换
<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);