**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
13秒前关闭
Improve this question
我有下一个RegExp:
const codeRegExp = new RegExp(/<doc-code[^>]+docTitle="([^"]*)"[^>]+language="([^"]*)"[^>]+content="([^"]*)"[^>]*><\/doc-code>/g);
我有下一个输入文本:
const fileContent = `
<doc-section docTitle="Quick Start" link="start">
<doc-code
docTitle="ts"
language="ts"
content="import { ButtonModule } from 'primeng/button';"
></doc-code>
<doc-code
docTitle="html"
language="html"
content="<p-button label='Primary'></p-button>"
></doc-code>
</doc-section>
`;
如果现在我已经执行了下一个代码:
let match;
let result = [];
while ((match = codeRegExp.exec(fileContent)) !== null) {
const [, docTitle, language, content] = match;
result.push({docTitle, language, content});
}
document.getElementById('log').innerHTML = JSON.stringify(result, null, 2);
然后我将给予以下输出:
[
{
"docTitle": "ts",
"language": "ts",
"content": "import { ButtonModule } from 'primeng/button';"
},
{
"docTitle": "html",
"language": "html",
"content": ""
}
]
内容字段为空。如果我从内容字段中删除尖括号,那么它就被正确解析了。
当我在https://regex101.com/上检查这个RexExp- all时,第二个块的内容在RegExp的第三组上(参见screenshot)。
我做错了什么?
const codeRegExp = new RegExp(/<doc-code[^>]+docTitle="([^"]*)"[^>]+language="([^"]*)"[^>]+content="([^"]*)"[^>]*><\/doc-code>/g);
const fileContent = `
<doc-section docTitle="Quick Start" link="start">
<doc-code
docTitle="ts"
language="ts"
content="import { ButtonModule } from 'primeng/button';"
></doc-code>
<doc-code
docTitle="html"
language="html"
content="<p-button label='Primary'></p-button>"
></doc-code>
</doc-section>
`;
let match;
let result = [];
while ((match = codeRegExp.exec(fileContent)) !== null) {
const [, docTitle, language, content] = match;
result.push({
docTitle,
language,
content
});
}
console.log(result);
在Stackblitz上重现问题。
1条答案
按热度按时间hlswsv351#
问题是内容被插入HTML中,浏览器将其解释为HTML