鍍金池/ 問答/Java  HTML/ 正則過濾標簽并且保留標簽里面的屬性

正則過濾標簽并且保留標簽里面的屬性

一個文本框里面的HTML 里面有文本和 img 標簽
例如

<img src="../../static/images/express/4.gif" alt="[em_4]">好好研究研究這個方案真詳細<img src="../../static/images/express/4.gif" alt="[em_4]">

要過濾成這樣的

[em_4]好好研究研究這個方案真詳細[em_4]

昨天查了好長時間都沒查到, 正則不太行, 求助, 謝謝了

回答
編輯回答
涼心人

受到 @ymsd 的啟發(fā), 用了下面的方式, 不過不是一個正則解決的, 但也達到了需求

 var str = '好好<img src="../../static/images/express/4.gif" alt="[em_4]">好研究研究這<img src="../../static/images/express/4.gif" alt="[em_4]">個方案真詳細<img src="../../static/images/express/4.gif" alt="[em_4]">1111'

 var temp = str.replace(/<img.*?(?!alt=".*?")(>)/g, (match) => {
   return match.replace(/<img.*?(alt="(.*?)")(>)/g, '$2')
 })

結(jié)果

好好[em_4]好研究研究這[em_4]個方案真詳細[em_4]1111
2017年10月30日 02:21
編輯回答
情殺

正則表達式主要用來處理字符串,你這個既然是DOM元素,為什么要用正則表達式呢?
可以使用JQuery:

var str = $('img:eq(0)').attr('alt') + $('img:eq(0)'). text() + $('img:eq(1)').attr('alt')

__

更新

題主給的是字符串,所以可以通過如下正則式取值:

reg1 = /\[.*?\]/g
reg2 = />.*?</g

var str = '<img src="../../static/images/express/4.gif" alt="[em_4]">好好研究研究這個方案真詳細<img src="../../static/images/express/4.gif" alt="[em_4]">'
var text = str.match(reg2)[0]
var result = str.match(reg1)[0] + text.substring(1, text.length - 1) + str.match(reg1)[1]
console.log(result)
2018年5月16日 23:50
編輯回答
別硬撐

看看這個符合要求嗎? 給個贊吧

var str = '<img src="../../static/images/express/4.gif" alt="[em_4]">好好研究研究這個方案真詳細<img src="../../static/images/express/4.gif" alt="[em_4]">';
var result = str.replace(/^.+alt="(.*)">(.*)<.*alt="(.*)".*$/, '$1$2$3');
console.log(result);

http://regex.zjmainstay.cn/r/...

2017年4月23日 18:15