我有像
这样的字符串Male <input type="checkbox" value="male" name="gender[]" >
Female <input type="checkbox" value="Female" name="gender[]">
输出应该像
var data="<html> <div style=""> fasf saf <div></html>"
答案 0 :(得分:1)
尝试使用DOM。
//create a dummy div.
var elem = document.createElement("div");
//now append the text as child.
elem.innerHTML = data;
//now get the string that needs the edit.
//if you have multiple divs iterate through the elements and do the following.
var temp = elem.getElementsByTagName("div")[0].innerHTML;
temp = temp.replace(new RegExp(" ","g")," ");
//finally update the div and get back edited data.
elem.getElementsByTagName("div")[0].innerHTML = temp;
data = elem.innerHTML;
答案 1 :(得分:0)
有人指出,你不应该使用正则表达式来解析html,它一般来说太复杂了(Here讨论得很好。)
此外,您缺少最后一个div的结束标记,它应该是:
...</div></html>
最后,如果您仍想使用正则表达式,可以尝试查找'&gt; \ s +&lt;'并替换为'&gt;&amp; npsp&lt;'替换不同标签之间的空格。
替换标签内的空格要困难得多,我认为你真的应该避免它。
答案 2 :(得分:0)
因为标签中有空格所以不能简单地替换。试试吧:
var data="<html> <div style=''> fasf saf <div></html>";
var strs = data.split('');
var openTag = false;
for(var i = 0; i< data.length; i++){
if(strs[i]=="<")
openTag = true;
if(strs[i]==">")
openTag = false;
if(!openTag && strs[i] == " ")
strs[i] = " "
}
console.log(strs.join(''));