在正则表达式中替换全局HTML字符串

时间:2018-09-06 04:29:06

标签: javascript regex

我有这样的HTML字符串:

<div>My cat</div><div>My dog</div><div>12345</div>

我想使用Regex替换全局字符串(将</div><div>更改为<br/>,然后删除所有HTML,仅保留<br/>

My cat<br/>My dog<br/>12345

我尝试了以下代码:

var formatHTMLQuill = function (stringHTML) {
  let t = stringHTML.replace('</div><div>', '<br/>');
  let n = t.replace(/<(?!br\s*\/?)[^>]+>/g, '')
  return n
}

但这不起作用,结果为My cat<br/>My dog</div><div>12345

3 个答案:

答案 0 :(得分:1)

您可以先删除<div>并将</div>替换为<br/>

var formatHTMLQuill = function (stringHTML) {
  let t = stringHTML.replace(/\<div>/g, '');  
  
  let n = t.replace(/\<\/div>/g, '<br/>')
  return n
}

console.log(formatHTMLQuill("<div>test</div> <div>test1</div>"))

答案 1 :(得分:1)

您可以将RegEx与全局标记g一起使用。 g修饰符用于执行全局匹配(查找所有匹配,而不是在第一个匹配之后停止)。

var html = `<div>My cat</div><div>My dog</div><div>12345</div>`

var formatHTMLQuill = function (stringHTML) {
  let t = stringHTML.replace(/<div>/ig,'')         //remove the start div
                    .replace(/<\/div>/ig, '<br/>') //replace the closing </div>
                    .replace(/(<br\/>\s*)+$/,'');  //remove the last <br/>
  return t;
}

console.log(formatHTMLQuill(html));

答案 2 :(得分:1)

请验证以下代码:

var formatHTMLQuill = function (stringHTML) {
let t = stringHTML.replace(/(<\/div><div>)/g, '<br/>');
let n = t.replace(/(<\/div>|<div>)/g, '');
return (n);
}

console.log(formatHTMLQuill('<div>My cat</div><div>My dog</div><div>12345</div>'));