多个标签后无法获取字符串

时间:2019-02-10 17:32:43

标签: regex

我有一个字符串,其中包含多行文本。在该字符串中,我需要使用正则表达式获取三个值。我能够获取前两个值。但是我无法获取第三个值。当我们有动态标签时,是否可以有人帮助我教我更好地使用正则表达式进行解释的方法。

字符串:

<input type='radio' class="radio" id="bb_radio1266767" name='266' value='767'  onclick="show(document.forms[0],window.pageNumber)" />
<!-- Start template -->
</td>
<td class="col_info ">
<label for="bb_radio1266767">
<!-- Start baseProductInfo/displayBaseProductName.ftl-->
 Essential

在上面的String中,我需要获取 Essential 值,该文本将始终出现在边标记中。在该文本之前,我可能有多个标签。

请在这里帮助

1 个答案:

答案 0 :(得分:0)

提取字符串的两种方法

第一种(也是更好的方法)是使用属性.textContent

document.querySelector('.col_info').textContent;

第二种方法是使用正则表达式方法.exec()

const rgx = /Essential/g;
let res = rgx.exec(str2);
while (res !== null) {
  console.log('Using regex.exec(): ' + res[0]);
  res = rgx.exec(str2);
}

您需要有效的HTML才能使用.textContent。我假设您的真实页面具有有效的HTML,所以更正了表格和标签。对于.exec(),我使用文字HTML并将其转换为字符串(只需用反引号 ` 换行)。当然,这是假设您是手动执行的。


演示

const str1 = document.querySelector('.col_info').textContent;
console.log('Using .textContent: ' + str1.trim());

const str2 = `<input type='radio' class="radio" id="bb_radio1266767" name='266' value='767'  onclick="show(document.forms[0],window.pageNumber)" />
<!-- Start template -->
</td>
<td class="col_info ">
<label for="bb_radio1266767">
<!-- Start baseProductInfo/displayBaseProductName.ftl-->
 Essential`;

const rgx = /Essential/g;
let res = rgx.exec(str2);
while (res !== null) {
  console.log('Using regex.exec(): ' + res[0]);
  res = rgx.exec(str2);
}
<table>
  <tr>
    <td>
      <input type='radio' class="radio" id="bb_radio1266767" name='266' value='767' onclick="show(document.forms[0],window.pageNumber)" />
      <!-- Start template -->
    </td>
    <td class="col_info ">
      <label for="bb_radio1266767">
<!-- Start baseProductInfo/displayBaseProductName.ftl-->
 Essential
 </label>
    </td>
  </tr>
</table>