Javascript正则expression式:匹配文本不是HTML标记的一部分
我真的希望有一个在node.js中可执行的正则expression式(所以没有jQuery的DOM处理等,因为标签可以有不同的嵌套),匹配所有不是HTML标签的文本或其中的一部分到单独组。
例如,我希望从该string匹配“5”,“ELT。”,“SPR”,“”,“plo”,“Unterricht”,“”,“nbsp”和“plo”
<tr class='list even'> <td class="list" align="center" style="background-color: #FFFFFF" > <span style="color: #010101">5</span> </td> <td class="list" align="center" style="background-color: #FFFFFF" > <b><span style="color: #010101">ELT.</span></b> </td> <td class="list" align="center" style="background-color: #FFFFFF" > <b><span style="color: #010101">SPR</span></b> </td> <td class="list" style="background-color: #FFFFFF" > </td> <td class="list" align="center" style="background-color: #FFFFFF" > <strike><span style="color: #010101">pio</span></strike> </td> <td class="list" align="center" style="background-color: #FFFFFF" > <span style="color: #010101">Unterricht</span> </td> <td class="list" style="background-color: #FFFFFF" > </td> <td class="list" style="background-color: #FFFFFF" > </td> <td class="list" align="center" style="background-color: #FFFFFF" > <b><span style="color: #010101">pio</span></b> </td> </tr>
我可以保证标签内没有“>”。
我发现的解决scheme是(?<=^|>)[^><]+?(?=<|$)
,但是在node.js中不起作用(可能是因为向前?它说“无效的组” )
有什么build议么? (是的,我真的认为正则expression式是正确的,因为html可能以其他方式嵌套,并且内容总是具有相同的顺序,因为它是一个表)
试试'yourhtml'.replace(/(<[^>] *>)/ g,'')
'<tr class =“list even”> <span style =“color:#010101”> </ span> <span style =“color-color:#FFFFFF” / td> <td class =“list”align =“center”style =“background-color:#FFFFFF”> <b> <span style =“color:#010101”> ELT </ span> </ b> </ tt> <td class =“list”align =“center”style =“background-color:#FFFFFF”> <b> <span style =“color:#010101”> SPR </ span> </ b> </ td> <td class =“list”style =“background-color:#FFFFFF”> </ td> <td class =“list”align =“center”style =“background-color:#FFFFFF”> < > <span style =“color:#010101”> pio </ span> </ strike> </ td> <td class =“list”align =“center”style =“background-color:#FFFFFF”> < </ span> </ span> </ span> </ span> </ span> <span style =“color-color: “background-color:#FFFFFF”> </ td> <td class =“list”align =“center”style =“background-color:#FFFFFF”> <b> <span style =“color:#010101”> pio </ span> </ b> </ td> </ tr>'。replace(/(<[^>] *>)/ g,'')
它会给你一个空格分隔的文本,你想匹配(你可以拆分空间)。
也许你可以直接使用标签自己分割:
html.split(/<.*?>/)
之后,您必须从结果中删除空string。