Javascript 使用正则表达式删除HTML标记和换行符
我想用Javascript 使用正则表达式删除HTML标记和换行符,javascript,regex,Javascript,Regex,我想用标记替换html标记和换行符。为此,我使用了以下代码,但它没有替换\r\n const newText=text.replace(/)/ig,“”) .replace(/(?:\r\n |\r |\n)/g,“”只要用空字符串替换与该模式匹配的所有内容即可 这是一个简单的替换,其中\r是回车,\n是换行符(因此它肯定会删除所有换行符,这些换行符有时是\r和\n的嵌入) ]+>将匹配每个HTML标记。只要用空字符串替换与该模式匹配的所有内容(]+>\r\124;\ n) 这是一个简单的替换
标记替换html标记和换行符。为此,我使用了以下代码,但它没有替换\r\n
const newText=text.replace(/)/ig,“
”)
.replace(/(?:\r\n |\r |\n)/g,“
”
只要用空字符串替换与该模式匹配的所有内容即可
这是一个简单的替换,其中\r
是回车,\n
是换行符(因此它肯定会删除所有换行符,这些换行符有时是\r
和\n
的嵌入)
]+>
将匹配每个HTML标记。只要用空字符串替换与该模式匹配的所有内容(]+>\r\124;\ n)
这是一个简单的替换,其中\r
是回车,\n
是换行符(因此它肯定会删除所有换行符,这些换行符有时是\r
和\n
的嵌入)
]+>
将匹配每个HTML标记。这对我很有用。您的CRLFs“\r”是一个转义字符还是两个字符,分别是“\”和“r”
如果HTML元素包含字符\n和\r,则它们是文本,除非显示源代码,否则在div中这将非常奇怪。普通ol'换行符将以单个转义字符结束
此外,还不清楚源代码是从元素中提取的还是静态文本
您可能必须在正则表达式中避开文本大小写
replace(/(?:\\r\\n|\\r|\\n)/g, '<br>')
替换(/(?:\\r\\n |\\r |\\n)/g,
)
const text=`
javax.xml.ws.soap.SOAPFaultException:响应为意外的文本/html内容类型。HTML流的传入部分:\r\n\r\n\r\n\r\n500-内部服务器错误。\r\n\r\n\r\n\r\n服务器错误\r\n\r\n 500-内部服务器错误。\r\n正在查找的资源有问题,无法显示。\r\n\r\n\r\n\r\n\r\n\t`
常量newText=文本
.替换(/)/ig,“
”)
.替换(/(?:\r\n |\r |\n)/g,“
”)
//.替换(/(?:\\r\\n |\\r |\\n)/g,“
”)
console.log(newText)
const text2=document.getElementById('text').innerHTML
常量newText2=text2
.替换(/)/ig,“
”)
.替换(/(?:\r\n |\r |\n)/g,“
”)
//.替换(/(?:\\r\\n |\\r |\\n)/g,“
”)
console.log(newText2)
这
是
//这里什么都没有
A.
div
这些是文本\r\n\r\n,除非取消对特殊情况的注释,否则不会转义。
这对我很有用。您的CRLFs“\r”是一个转义字符还是两个字符,分别是“\”和“r”
如果HTML元素包含字符\n和\r,则它们是文本,除非显示源代码,否则在div中这将非常奇怪。普通ol'换行符将以单个转义字符结束
此外,还不清楚源代码是从元素中提取的还是静态文本
您可能必须在正则表达式中避开文本大小写
replace(/(?:\\r\\n|\\r|\\n)/g, '<br>')
替换(/(?:\\r\\n |\\r |\\n)/g,
)
const text=`
javax.xml.ws.soap.SOAPFaultException:响应为意外的文本/html内容类型。HTML流的传入部分:\r\n\r\n\r\n\r\n500-内部服务器错误。\r\n\r\n\r\n\r\n服务器错误\r\n\r\n 500-内部服务器错误。\r\n正在查找的资源有问题,无法显示。\r\n\r\n\r\n\r\n\r\n\t`
常量newText=文本
.替换(/)/ig,“
”)
.替换(/(?:\r\n |\r |\n)/g,“
”)
//.替换(/(?:\\r\\n |\\r |\\n)/g,“
”)
console.log(newText)
const text2=document.getElementById('text').innerHTML
常量newText2=text2
.替换(/)/ig,“
”)
.替换(/(?:\r\n |\r |\n)/g,“
”)
//.替换(/(?:\\r\\n |\\r |\\n)/g,“
”)
console.log(newText2)
这
是
//这里什么都没有
A.
div
这些是文本\r\n\r\n,除非取消对特殊情况的注释,否则不会转义。
无法使用正则表达式解析[X]HTML。因为正则表达式无法解析HTML。Regex不是一个可以用来正确解析HTML的工具
相反,您的指尖上有一个解析器。用它
var tmp = document.createElement('div');
tmp.innerHTML = text;
// replace all start/end tags with <br> for... some reason, I guess!
Array.from(tmp.getElementsByTagName("*")).forEach(function(elem) {
// ignore <br> tags
if( elem.nodeName.match(/^br$/i)) {
// do nothing
}
// outright remove <script> and <style>
else if( elem.nodeName.match(/^(?:script|style)$/i)) {
elem.parentNode.replaceChild(document.createElement('br'), elem);
}
// replace element with its contents and place a <br> before and after
else {
elem.parentNode.insertBefore(document.createElement('br'), elem);
while(elem.firstChild) {
elem.parentNode.insertBefore(elem.firstChild, elem);
}
elem.parentNode.replaceChild(document.createElement('br'), elem);
}
});
var html = tmp.innerHTML;
// since replacing newlines with <br> is a string operation, go ahead and use regex for that
html = html.replace(/\r?\n/,"<br />");
var tmp=document.createElement('div');
tmp.innerHTML=文本;
//将所有开始/结束标记替换为
以用于。。。我想是有原因吧!
from(tmp.getElementsByTagName(“*”).forEach(函数(elem){
//忽略
标记
if(elem.nodeName.match(/^br$/i)){
//无所事事
}
//彻底拆除并拆除
else if(elem.nodeName.match(/^(?:script | style)$/i)){
elem.parentNode.replaceChild(document.createElement('br'),elem);
}
//将元件替换为其内容物,并在前后放置一个
否则{
elem.parentNode.insertBefore(document.createElement('br'),elem);
while(elem.firstChild){
elem.parentNode.insertBefore(elem.firstChild,elem);
}
elem.parentNode.replaceChild(document.createElement('br'),elem);
}
});
var html=tmp.innerHTML;
//因为用
替换换行符是一个字符串操作,所以请继续使用regex
html=html。替换(/\r?\n/,“
”);
无法使用正则表达式解析[X]HTML。因为正则表达式无法解析HTML。Regex不是一个可以用来正确解析HTML的工具
相反,您的指尖上有一个解析器。用它
var tmp = document.createElement('div');
tmp.innerHTML = text;
// replace all start/end tags with <br> for... some reason, I guess!
Array.from(tmp.getElementsByTagName("*")).forEach(function(elem) {
// ignore <br> tags
if( elem.nodeName.match(/^br$/i)) {
// do nothing
}
// outright remove <script> and <style>
else if( elem.nodeName.match(/^(?:script|style)$/i)) {
elem.parentNode.replaceChild(document.createElement('br'), elem);
}
// replace element with its contents and place a <br> before and after
else {
elem.parentNode.insertBefore(document.createElement('br'), elem);
while(elem.firstChild) {
elem.parentNode.insertBefore(elem.firstChild, elem);
}
elem.parentNode.replaceChild(document.createElement('br'), elem);
}
});
var html = tmp.innerHTML;
// since replacing newlines with <br> is a string operation, go ahead and use regex for that
html = html.replace(/\r?\n/,"<br />");
var tmp=document.createElement('div');
tmp.innerHTML=文本;
//将所有开始/结束标记替换为
以用于。。。我想是有原因吧!
from(tmp.getElementsByTagName(“*”).forEach(函数(elem){
//忽略
标记
if(elem.nodeName.match(/^br$/i)){
//无所事事
}
//彻底拆除并拆除
else if(elem.nodeName.match(/^(?:script | style)$/i)){
elem.parentNode.replaceChild(document.createElement('br'),elem);
}
//将元件替换为其内容物,并在前后放置一个
否则{
elem.parentNode.insertBefore(document.createElem