正则匹配标签内的空格问题

image

我尝试用/(<.*?>)\s(.*?)(<\/.*?>)/g 匹配
// 正则表达式
let rex = `/(<.*?>)\s(.*?)(<\/.*?>)/g`;
// 原字符串
let str = `<p class="ss" ><br>         tab空格 </p> <p>  普通空格</p><p>没有空格</p>`;
// 匹配
let res = str.replace(rex,`$1&nbsp;$2$3`)
// 控制台打印
console.log(res)
// 得到的结果是 `<p class="ss" ><br>&nbsp;        tab空格 </p> <p>&nbsp; 普通空格</p><p>没有空格</p>`

得到的结果是只匹配标签内的一个空格, 请问怎么实现标签内的空格都替换成   呢?
在线匹配测试地址

阅读 3.6k
1 个回答
var result = '<p class="ss" ><br>         tab空格 </p> <p>  普通空格</p><p>没有空格</p>'
.replace(/(\s*<[^>]+>)([^<>]*)(<\/[^>]+>\s*)/g, function(str, $1, $2, $3) {
  return [$1.trim(), $2.trim(), $3.trim()].join('')
})

// "<p class="ss" ><br>tab空格</p><p>普通空格</p><p>没有空格</p>"
console.log(result)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题