Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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删除这些标记_Javascript_Html_Regex_Xhtml_Replace - Fatal编程技术网

如何使用JavaScript删除这些标记

如何使用JavaScript删除这些标记,javascript,html,regex,xhtml,replace,Javascript,Html,Regex,Xhtml,Replace,我仍然在学习正则表达式(很明显),但我无法理解它,我想用正确的方法来做,而不是用很长的路来做。我怎样才能: 找到所有或并替换为\n,除了第一个和最后一个之外,在这种情况下,只需将其删除,对于,也替换为\n 用正则表达式或者别的什么。我是从jQuery$.get()返回中得到的。所以,请不要对我大发雷霆,我只是不知道怎么做。Javascript有很好的工具来处理xml(或xhtml)DOM。在正则表达式透视图中使用。要使第一个成为异常,必须识别使第一个失败的模式。例如,如果第一个之前的文本是abc

我仍然在学习正则表达式(很明显),但我无法理解它,我想用正确的方法来做,而不是用很长的路来做。我怎样才能:

找到所有
并替换为
\n
,除了第一个
和最后一个
之外,在这种情况下,只需将其删除,对于



也替换为
\n


用正则表达式或者别的什么。我是从jQuery$.get()返回中得到的。所以,请不要对我大发雷霆,我只是不知道怎么做。

Javascript有很好的工具来处理xml(或xhtml)DOM。在正则表达式透视图中使用。

要使第一个
成为异常,必须识别使第一个
失败的模式。例如,如果第一个
之前的文本是
abcxyz
,即
abcxyz
,则搜索每个
之前没有
abcxyz
的文本,以便第一个
不匹配。使用正则表达式,它将变成:
(?

要使最后一个

成为例外,您必须识别一个模式,该模式使最后一个

失败。例如,如果最后一个

后面的文本是
abcxyz
,即

abcxyz
,则您搜索每个

后面不跟
abcxyz
,以便最后一个
>

不匹配。使用正则表达式,它将变成:

(?!abcxyz)

尽管JavaScript支持正面和负面的前瞻,但不幸的是,JavaScript正则表达式既不支持正面的前瞻,也不支持负面的落后。事实上,有一些,但是,并不是所有的落后结构都可以模仿

因此,如果可能的话,尝试识别一种模式,该模式会使第一个
失败,但要使用负前瞻

要将第一个
和最后一个

替换为零,您可以反转上面使用的逻辑,您必须在单独的步骤中执行此操作


要将



替换为
\n
,请搜索:
,然后替换为
\n

,一种方法是允许浏览器为您执行此操作。在IE和WebKit中,您可以将HTML指定为
的内部HTML,并获取其
内部文本无论如何,这在Firefox或Opera中都是行不通的。这里有一个稍微奇怪的
Selection
对象用法:

function getInnerText(html) {
    var text = "";
    var div = document.createElement("div");
    div.innerHTML = html;

    document.body.appendChild(div);
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        sel.removeAllRanges();
        var range = document.createRange();
        range.selectNodeContents(div);
        sel.addRange(range);
        text = sel.toString();
        sel.removeAllRanges();
    } else if (document.body.createTextRange != "undefined") {
        var range = document.body.createTextRange();
        range.moveToElementText(div);
        text = range.text;
    }
    document.body.removeChild(div);
    return text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
}

强制性链接:好的,那么我该怎么做呢?它不必是正则表达式。你的问题太不明确了。例如,如果
元素之间有其他元素,或者如果有块级元素包含一些
元素,会发生什么?你能限制可能输入的范围吗?可能是也有助于退后一步,并解释用“\n”替换标记可以实现什么效果?不会有。这很简单。\n这样做是为了让客户端不必知道HTML,但保留间距。我个人这样做:“”+str.replace(/\n\n/g,

)。replace(/\n/,“
”)+“

”而现在我正在做这件事来将它转换回:str.replace(/|
/g,“\n”).replace(/\n$/,”);嗯,我认为在这种情况下使用正则表达式是可以的,但如果我这样做的话,我会将操作反转,因此使用正则表达式和普通字符串处理的组合。即,在正则表达式之外处理开始的open p标记和结束的close p标记,然后将字符序列“

”替换为“\n\n”,将字符序列“
”替换为“\n.”或者你知道..jquery或prototype或其他什么。好的,我得到了一个带有s和
s的大量文本字符串,我如何用jquery转换它以删除所有这些?