Как регулярное выражение Javascript соответствует начальному и конечному тегу

у меня есть строка

<tajweed class=ham_wasl>ٱ foo</tajweed>
<tajweed class=madd>ٱ bar</tajweed>

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

Каков точный результат, который вы хотите?

Tim Biegeleisen 10.04.2022 07:25
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
2
1
27
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Не используйте для этого регулярное выражение!

Вместо этого проанализируйте его как HTML, используя DOMпарсер, а затем используйте API DOM для доступа к нужным данным.

let htmlString = `
<tajweed class=ham_wasl>ٱ foo</tajweed>
<tajweed class=madd>ٱ bar</tajweed>
`

let domParser = new DOMParser()
let dom = domParser.parseFromString(htmlString, 'text/html')
let tajweeds = dom.querySelectorAll('tajweed')

let firstItemClass = tajweeds[0].className
let secondItemClass = tajweeds[1].className

Я просто работаю не с html, поэтому не могу использовать dom

Umar 10.04.2022 07:32

Что вы имеете в виду, говоря, что «работаете не с HTML»?

CherryDT 10.04.2022 10:48
Ответ принят как подходящий

для вашего примера:

(?<=class=).*?(?=>)

но если вы хотите выбрать значение класса между "", тогда

(?<=class=").*?(?=">)

демо

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

Umar 10.04.2022 07:49

если вы хотите получить теги, посмотрите на это регулярное выражение демо

aziz k'h 10.04.2022 07:56

если вы хотите получить их в двух группах, посмотрите на это регулярное выражение демо

aziz k'h 10.04.2022 08:00

как предотвратить вне тега не выбранный демо

Umar 10.04.2022 08:07

<tag>hello</tag> world <tag>test</tag>, так что мир тоже не выбран

Umar 10.04.2022 08:15

посмотрите, служит ли это тому, что вы хотите демо

aziz k'h 10.04.2022 08:17

о нет, да, на самом деле я хочу, братан, я говорю очень большое спасибо ... но у меня снова проблема, поэтому мне нужно заменить все между тегом и тегом тоже ... ниже

Umar 10.04.2022 08:42

<tajweed class=ham_wasl>ٱ foo</tajweed> арабский char <tajweed class=madd>ٱ bar</tajweed> hello world <tajweed>hoho</tajweed>

Umar 10.04.2022 08:43

так что <tajweed>char</tajweed> все совпадают, кроме текста вне тега, например, "arabic char"

Umar 10.04.2022 08:43

как это сделать?

Umar 10.04.2022 08:44

Я имею в виду каждую вещь от начального тега до конечного тега, все выбрано

Umar 10.04.2022 08:44

но персонажи без тега не будут выбраны

Umar 10.04.2022 08:46

спасибо братан ты решил мою проблему сейчас....

Umar 10.04.2022 08:50

я просто делаю это демо

Umar 10.04.2022 08:50

еще раз говорю большое спасибо брат

Umar 10.04.2022 08:52

Если вам нужны именованные группы захвата и, возможно, следующий вариант, вы можете попробовать следующее...

class RegEx extends RegExp {
  [Symbol.matchAll](str) {
    const result = RegExp.prototype[Symbol.matchAll].call(this, str);
    if (!result) {
      return [null];
    }
    return Array.from(result);
  }
  [Symbol.split](str, limit) {
    const result = RegExp.prototype[Symbol.split].call(this, str, limit);
    return result.map((x) => `${x}`);
  }
}
String.prototype._split = function (rx, limit, flags) {
  return this.split(new RegExp(rx, flags), limit);
};
String.prototype.test = function (regexstring, flags) {
  return new RegExp(regexstring, flags).test(this);
};
var ns=`<tajweed class="ham_wasl">ٱ foo</tajweed>
<tajweed class='madd widg fiu-skdm'>ٱ bar</tajweed>`.matchAll(`class\\=("|')(?<classes>[^\\>]+?)("|')`,'g')
console.log([...ns]);

Очень непонятно, как это помогает. Вам не хватает объяснения того, как работает код и какую проблему он решает. Кроме того, расширение прототипов нативных типов не рекомендуется, и вы не упомянули о проблемах, которые это может создать.

CherryDT 10.04.2022 10:50

Другие вопросы по теме