Задать вопрос
@DanKud

Как вытащить атрибут из тэга с помощью регулярного выражения?

Есть строка HTML-тэга с атрибутами. Например строка <span name="two">text</span> Как с помощью регулярного выражения на JavaScript вытащить из этой строки значения атрибута name ?
  • Вопрос задан
  • 1470 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно без регулярок создать узел и получить его атрибут:
var s = '<span toster="two">text</span>';
var el = document.createElement('div');
el.innerHTML = s;
var span = el.children[0];
var value;
var attrs = span.attributes;
for(let i = 0; i < attrs.length; i++) {
  if( attrs[i].name === 'toster') {
    value = attrs[i].value;
    break;
  }
}
if(value) {
  // нашлось
}
Ответ написан
Комментировать
@eternalfire
const regex = /([^"\\]*(?:\\.[^"\\]*)*)/gm;
const str = `<span name="two">text</span>`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}
Ответ написан
Комментировать
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
UPD - невнимательно прочёл вопрос. Подправил именно под нахождение значения атрибута.
console.log(/name=([\"\'])([^\"\']+)\1/.exec('<span name="two">text</span>')[2]);


UPD 2 - Если операция частая, тогда проще использовать такую функцию:
function _getAttr (str, attr) {
	return new RegExp(attr + "\s*=\s*([\"\'])([^\"\']+)\\1").exec(str)[2];
}

console.log(_getAttr('<span name="two">text</span>', 'name'));
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы