如何使用匹配功能或其他方法检索<span>和</ span>之间的多个单词?

webdesignnoob

说我的字符串是这样的:

var testexample = <p nameIt="Title">Title_Test</p><figure class="t15"><table><thead><tr>
<th><span>Column1</span></th><th><span>Column2</span></th></tr></thead><tbody><tr><td><span>Entry1</span></td><td><span>Entry2</span></td><td><span>ready</span></td></tr></tbody></table></figure><p ex="ready">!aaa; 

这是一个很长的字符串,但是是以字符串形式写出的表。我怎么会在得到之间的话<span></span>例如,我希望它返回Column1,Column2,Entry1,Entry2(也许在数组中?)

这是我到目前为止尝试过的:

storing = testexample.match(/<span>(.*)</span>/);

但是它只返回了“ Column1”,我也尝试做matchAll,exec和doing /<span>(.*)</span>/g这些结果使我得到了整个字符串,什么也没有,诸如之类的东西<th><span>Column1</span></th>,或者仅仅是“ Column1”。我对javascript很陌生,因此我在阅读文档时不确定自己在做什么错。任何帮助,将不胜感激。谢谢。

尼古拉·迪米特洛夫(Nikola Dimitroff)

如前所述,您无法使用Regex可靠地解析随机HTML。但是,假设您只想解析问题中所具有的HTML表,那么这就是您的正则表达式:

<span>(.*?)<\/span>

我改变了几件事:

  1. 您没有逃脱/in,</span>因此您的正则表达式实际上早已结束
  2. ?在比赛中任何部分中添加了一个这样,正则表达式将匹配最短的序列,因此您可以匹配所有跨度。
  3. 调用match将匹配此正则表达式的所有匹配项。这也将包括<span>/</span>部分
  4. 修剪开始和结束<span>部分

这是完整的示例:

var testexample = `<p nameIt="Title">Title_Test</p><figure class="t15"><table><thead><tr>
<th><span>Column1</span></th><th><span>Column2</span></th></tr></thead><tbody><tr><td><span>Entry1</span></td><td><span>Entry2</span></td><td><span>ready</span></td></tr></tbody></table></figure><p ex="ready">!aaa`;

var regex = /<span>(.*?)<\/span>/g;

var match = testexample.match(regex);
var columnContent = match.map(m => m.replace("<span>", "").replace("</span>", ""));
console.log(columnContent[0]); // Column1
console.log(columnContent[1]); // Column2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章