正则表达式按双引号分割文本异常,请求修复JavaScript代码
修复数组转列表时的元素分割错误
问题说明
从数据库获取的数组包含3个独立元素,其中第三个元素内部带有逗号:
let description = [ "Time Usage: 9.00am - 4.00pm", "Rental of Commune Room 01 (7 Hours)", "55\" Smart TV, 1x Clear Writing Glass, Marker Pen, HDMI Cable, Complimentary WiFi, and Filtered Water" ];
期望将每个数组元素作为独立列表项输出,但原代码错误地将第三个元素内部的逗号也当作分隔符,导致列表项被不合理拆分。
错误原因
原代码先通过toString()将数组转为字符串,这会把数组元素间的分隔逗号和元素内部的逗号混为一谈。后续的正则替换尝试区分引号内的逗号,但转成字符串后引号的上下文丢失,正则无法正确识别需要保留的内部逗号,最终导致错误分割。
修复后的代码
直接利用数组本身的结构,每个元素就是完整的列表项,无需额外处理内部逗号:
生成Markdown列表格式
let description = [ "Time Usage: 9.00am - 4.00pm", "Rental of Commune Room 01 (7 Hours)", "55\" Smart TV, 1x Clear Writing Glass, Marker Pen, HDMI Cable, Complimentary WiFi, and Filtered Water" ]; // 直接将每个元素转为带*的列表项 const formatted = description.map(item => `* ${item}`).join('\n'); console.log(formatted);
生成HTML列表格式(匹配你的期望输出)
如果需要生成<ul>/<li>结构:
let description = [ "Time Usage: 9.00am - 4.00pm", "Rental of Commune Room 01 (7 Hours)", "55\" Smart TV, 1x Clear Writing Glass, Marker Pen, HDMI Cable, Complimentary WiFi, and Filtered Water" ]; const htmlList = `<ul>\n <li>${description.join('</li>\n <li>')}</li>\n</ul>`; console.log(htmlList);
输出结果
运行修复后的代码,会得到符合预期的输出:
- Time Usage: 9.00am - 4.00pm
- Rental of Commune Room 01 (7 Hours)
- 55" Smart TV, 1x Clear Writing Glass, Marker Pen, HDMI Cable, Complimentary WiFi, and Filtered Water
对应的HTML结构:
<ul> <li>Time Usage: 9.00am - 4.00pm</li> <li>Rental of Commune Room 01 (7 Hours)</li> <li>55" Smart TV, 1x Clear Writing Glass, Marker Pen, HDMI Cable, Complimentary WiFi, and Filtered Water</li> </ul>
内容的提问来源于stack exchange,提问作者Malith Fernando
相关产品推荐
相关产品推荐

