Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (https://javascript.ru/forum/misc/79693-regulyarnoe-vyrazhenie.html)

Decode 10.03.2020 15:51

Регулярное выражение
 
Здравствуйте!

Помогите, пожалуйста. Нужно извлечь из HTML-тэга весь текст и заменить переносы строк на пробелы. А так же удалить все "bla bla"
<span id="text">
    <b>bla bla</b><br>
    <u>text</u><br>
    text, text <br>
    text<br>
    text<br>
    <button>bla bla</button>
  </span>
  <script src="https://code.jquery.com/jquery-2.0.3.js"></script>
  <script>
    console.log( $('#text').text().trim().replace(/\n/, ' ') );
  </script>


Т.е. мне нужно так: text text,text text text

Decode 10.03.2020 16:08

<span id="text">
    <b>bla bla</b><br>
    <u>text</u><br>
    text, text <br>
    text<br>
    text<br>
    <button>bla bla</button>
  </span>
  <script src="https://code.jquery.com/jquery-2.0.3.js"></script>
  <script>
    console.log( $('#text').text().trim().text().trim().replace(/\n/g, '|').replace(/.+?\|/, '').replace(/.+?\|/, '').replace(/[^|]+$/, '') );
  </script>


Затупил. Так работает. Можно как-нибудь упростить?

рони 10.03.2020 16:23

Decode,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<span id="text">
    <b>bla bla</b><br>
    <u>text</u><br>
    text, text <br>
    text<br>
    text<br>
    <button>bla bla</button>
  </span>
  <script src="https://code.jquery.com/jquery-2.0.3.js"></script>
  <script>
   var txt = $('#text').contents().filter(function() {
     return this.nodeType == 3 || this.nodeName == 'U';
   }).get().map(el => el.textContent).join(' ').replace(/\s+/g, ' ');
   console.log(txt);

  </script>
</body>
</html>

Malleys 10.03.2020 20:18

<span id="text">
	<b>bla bla</b><br>
	<u>text</u><br>
	text, text <br>
	text<br>
	text<br>
	<button>bla bla</button>
</span>
<script>
	var txt = document.querySelector("#text").textContent
		.replace(/bla bla/g, "") // удаляю «bla bla»
		.replace(/(\s*\r?\n\s*)+/g, " ") // заменяю переводы строк на пробелы
		.trim()
	console.log(txt);
</script>


Часовой пояс GMT +3, время: 06:45.