Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式删除HTML标记和换行符_Javascript_Regex - Fatal编程技术网

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