Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 正则表达式。删除<;tr>;,所有内容,直到结束tr标签_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式。删除<;tr>;,所有内容,直到结束tr标签

Javascript 正则表达式。删除<;tr>;,所有内容,直到结束tr标签,javascript,regex,Javascript,Regex,如果我们在做jQuery,这是一件小事,只需标记TR并删除它,等等。。但我很好奇,人们是如何以严格的正则表达式方式做到这一点的。。这会影响dom 我有这个: <tr id="anyName"> <td> // a bunch of html </td> </tr> //一堆html 您将如何使用正则表达式将tr及其所有内容替换为“” 我有这个: sometable.replace(“.*”,“) 我尝试了一些

如果我们在做jQuery,这是一件小事,只需标记TR并删除它,等等。。但我很好奇,人们是如何以严格的正则表达式方式做到这一点的。。这会影响dom

我有这个:

<tr id="anyName">
    <td>
         // a bunch of html
    </td>
</tr>

//一堆html
您将如何使用正则表达式将tr及其所有内容替换为“”

我有这个:

sometable.replace(“.*”,“)

我尝试了一些其他的方法,但是我不能让它起作用。基本上,我希望tr和它的所有内容都消失。我使用的是一个服务器端模板引擎,它在进入视图之前处理所有这些数据。所以,我可以将这些数据作为字符串保存到这个模板逻辑中。。。然后把它拿走。。但是由于它是一个字符串,我需要正则表达式来删除它

有什么想法吗?我觉得我缺少了一些非常简单的东西。

问题是
可以在里面嵌套
标记

在某些情况下,
标记没有结束标记(XHTML除外)

所以,即使在正则表达式中使用奇数模式,正则表达式也无法删除此类标记

因此,请不要为此使用正则表达式


因为您使用的是jquery,所以可以使用

或者你可以使用其他服务器端html解析器,但不要使用正则表达式,它可能会破坏你的网站


要回答您的问题,您可以使用此正则表达式

 (?s)<tr[^<>]*>(.(?!<tr[^<>]*>))*?</tr>
(?)((?!)*?
或者使用javascript

 /<tr[^<>]*>(.(?!<tr[^<>]*>))*?<\/tr>/s
/(.(!)*?/s

但是等一下,你需要不断地替换它,直到它替换了所有的内容

因此,您需要使用for loop和loop,直到它替换所有

但是如果没有结束标记,这个正则表达式可能会中断。问题是
可以在内部嵌套
标记

在某些情况下,
标记没有结束标记(XHTML除外)

所以,即使在正则表达式中使用奇数模式,正则表达式也无法删除此类标记

因此,请不要为此使用正则表达式


因为您使用的是jquery,所以可以使用

或者你可以使用其他服务器端html解析器,但不要使用正则表达式,它可能会破坏你的网站


要回答您的问题,您可以使用此正则表达式

 (?s)<tr[^<>]*>(.(?!<tr[^<>]*>))*?</tr>
(?)((?!)*?
或者使用javascript

 /<tr[^<>]*>(.(?!<tr[^<>]*>))*?<\/tr>/s
/(.(!)*?/s

但是等一下,你需要不断地替换它,直到它替换了所有的内容

因此,您需要使用for loop和loop,直到它替换所有


但是如果没有结束标记,这个正则表达式可能会中断

@Anirudh是正确的;由于嵌套的
标记和未关闭的
标记,这可能是一个非常困难的问题。但是假设您没有嵌套或未关闭的
标记,您确实可以使用正则表达式来解决这个问题

// if your html is in a variable called "html", you can get rid of <tr> tags thusly:
html = html.replace( /<tr[^]*?<\/tr>/, '' );
//如果您的html位于一个名为“html”的变量中,则可以删除标记:

html=html.replace(/@Anirudh是正确的;这可能是一个非常困难的问题,这要感谢嵌套的
标记和未关闭的
标记。但是,假设您没有嵌套或未关闭的
标记,您确实可以使用正则表达式来解决此问题

// if your html is in a variable called "html", you can get rid of <tr> tags thusly:
html = html.replace( /<tr[^]*?<\/tr>/, '' );
//如果您的html位于一个名为“html”的变量中,则可以删除标记:

html=html.replace(/只有在严格控制结构(没有递归标记等)的情况下,才能在html上使用正则表达式。您的问题没有指定结构的严格程度。请参阅一般情况。“我有一个螺钉要拧入,但我很好奇谁会使用锤子而不是螺丝刀来拧入。”除非您能保证HTML遵循非常严格的模式,否则您要求将HTML解析器作为正则表达式模式编写。虽然可以制作基于正则表达式的解析器,但实际上不可能使用正则表达式解析HTML。无论哪种方式,编写解析器都远远超出了SO答案的范围。省略not-首先是必需的标记,或者给它一个类,将其设置为显示:无。@ikegami如果你用大量频繁的短敲击轻轻地放下锤子,然后直接敲击螺丝,螺纹会将螺丝拧入。@Legostrmtroppr:我肯定OP也是这么想的。只有在不需要的情况下,你才能在HTML上使用正则表达式结构是严格控制的(没有递归标记等)。您的问题没有说明结构有多严格。请参阅一般情况。“我有一个螺钉要拧入,但我很好奇谁会使用锤子而不是螺丝刀来拧入。”除非您能保证HTML遵循非常严格的模式,否则您要求将HTML解析器作为正则表达式模式编写。虽然可以制作基于正则表达式的解析器,但实际上不可能使用正则表达式解析HTML。无论哪种方式,编写解析器都远远超出了SO答案的范围。省略not-首先是必需的标记,或者给它一个类,将其设置为显示:无。@ikegami如果你用大量频繁的短敲击轻轻地放下锤子,然后直接敲击螺钉,螺纹会将螺钉拧入。@Legostrmtropr:我肯定OP也是这么想的。+1不建议使用正则表达式,但t、 ..虽然结束标记是可选的,但正则表达式可以匹配到下一个开始标记(但不包括)的所有内容。但对于嵌套表来说,这还不够:-(使用解析器。+1不建议使用正则表达式,但…虽然结束标记是可选的,但正则表达式可以匹配到下一个开始TR的所有内容,但不包括下一个开始TR。但对于嵌套表来说,这是不够的。:-(使用解析器)。