@HitGirl

Как получить атрибуты и их значения из строки?

Здравствуйте!
Есть строка:
`src='solution 1' height=300 border=1 src2="https://en.wikipedia.org/wiki/"`

Пытаюсь превратить её в объект:
{
 src: 'solution 1'
border: 1,
...
}

Нашёл в интернете регулярное выражение:
(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|["']))+.)["']?
Оно почти работает. Но есть проблема: когда значение атрибута 1 цифра, выражение его не находит.
Пример
Подскажите, пожалуйста, как исправить выражение, чтобы оно находило все атрибуты?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Легче всего так: ([a-zA-Z0-9-]+)=("[^"]*"|'[^']*'|[a-zA-Z0-9_-]+)
Но нужно очищать результат от лишних " и '.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Revencu
@Revencu
А не проще ли взять все аттрибуты элемента
const attrs = element.getAttributeNames().reduce((acc, name) => {
  return {...acc, [name]: element.getAttribute(name)};
}, {});
Ответ написан
Ваш ответ на вопрос

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

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