Невозможно получить строку после нескольких тегов - PullRequest
0 голосов
/ 10 февраля 2019

У меня была одна строка, в которой есть текст с несколькими строками.В этой строке мне нужно получить три значения с помощью регулярных выражений.Я могу получить первые два значения.Но я не могу получить третье значение.Может ли кто-нибудь помочь здесь, чтобы научить меня лучше использовать регулярные выражения с объяснением, когда у нас есть динамические теги.

String:

<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

В приведенной выше строке мне нужно получить Essential value, этот текст всегда будет выходить за пределы тегов.Перед этим текстом у меня может быть несколько тегов.

Пожалуйста, помогите здесь

1 Ответ

0 голосов
/ 10 февраля 2019

Два способа извлечь строку

Первый (и лучший способ) - использовать свойство .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);
}

Для использования .textContent вам необходим действительный HTML.Я исправил таблицу и метку, предполагая, что ваша настоящая страница имеет действительный 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...