JavaScript中markdownParser无法转换含空格字符串为HTML标签的问题
解决Markdown标题转HTML的空格兼容问题
你的代码无法处理带空格的标题内容,核心原因是正则表达式仅匹配标题符号(#)与内容之间的单个空格,且替换顺序可以进一步优化以提升严谨性。
修改后的代码
function markdownParser(markdown) { const htmlText = markdown .replace(/^######\s+(.*$)/gim, '<h6>$1</h6>') .replace(/^#####\s+(.*$)/gim, '<h5>$1</h5>') .replace(/^####\s+(.*$)/gim, '<h4>$1</h4>') .replace(/^###\s+(.*$)/gim, '<h3>$1</h3>') .replace(/^##\s+(.*$)/gim, '<h2>$1</h2>') .replace(/^#\s+(.*$)/gim, '<h1>$1</h1>') return htmlText.trim() }
关键调整说明
- 把正则中的单个空格
替换为\s+,可匹配标题符号后一个或多个空白字符(包括空格、制表符),兼容更多输入场景; - 调整替换顺序,从最多#的h6开始匹配,避免出现多#标题被少#正则误匹配的情况,逻辑更严谨。
测试传入#### Muhammad Kamran,会正确返回<h4>Muhammad Kamran</h4>;即使标题符号与内容间有多个空格,也能正常转换。
内容的提问来源于stack exchange,提问作者Kamran Khan
相关产品推荐
相关产品推荐

