@newaitix

Как выбрать первый и последний тег из текста?

var src='<p>мама мыла раму</p>'; //['мама мыла раму', 'p']
var src='<div>мама мыла раму</div>'; //['мама мыла раму', 'div']
var src='<p><div>мама мыла раму</div></p>'; //['мама мыла раму', 'p']
var src='<div><p>мама мыла раму</p></div>'; //['мама мыла раму', 'div']

Есть строка в начале может стоять а может и не стоять тег
если есть тег то нужно узнать что это за тег
В результате получить текст без тега и название самого тега ['текст', 'div']
var myRe = /<([a-z]+)>([a-z]+)<\/([a-z]+)>/ig;
var myArray = myRe.exec("<div>cdbBdbsbz</div>");

Так работает но если я вставлю в текст br то он выберет br и закрывающий div а нужно выбрать только первый и последний тег на то что в середине не обращать внимания

если же текст такой - "аб" то он ничего не должен выбрать. //null
Только в том случае если в начале и в конце есть тег

В данном случае
var myRe = /<([a-z]+)>([a-z]+)<\/([a-z]+)>/ig;
var myArray = myRe.exec("<div><tags>cdbB<br>dbsbz</tags></div>");

нужно получить ['<tags>cdbB<br>dbsbz</tags>', 'div']
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
orlov0562
@orlov0562
I'm cool!
var myRe = /<([a-z]+)>(.+)<\/([a-z]+)>/ig;
var myArray = myRe.exec("<div><tags>cdbB<br>dbsbz</tags></div>");


Тут есть подробное объяснение: https://learn.javascript.ru/regexp-greedy-and-lazy
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Как альтернатива регулярным выражениям. Создаём DOM элемент. Помещаем в него нашу строку. После чего извлекаем текст и первого потомка.
var root = document.createElement('root');
var src='<p>мама мыла раму</p>';
root.innerHTML = src;
var result = [
    root.innerText,
    root.childNodes[0].tagName.toLowerCase()
]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы