Регулярное выражение для отбрасывания " - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть следующее регулярное выражение: /i18n(-?).*="(.*)"/g для javascript.

Я использую https://www.regextester.com для проверки.

<button i18n="@@user.button" data-test="download-confirmation_ok">
<a i18n-href="@@link.url" href="https://www.aaaa.es" target="_blank">
<div i18n="@@link.text">www.aaaa.es</div>

Не знаю t как data-test="download-confirmation_ok" и href="https://www.aaaa.es" target="_blank": https://imgur.com/sQZQXzZ

Я хочу только текст i18n или i18n- * между "TEXT".

Как я могу отменить остальные тетекс?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2020

Как насчет использования просто:

/i18n\S+/g

Похоже, что вы хотите, чтобы подстрока была до следующего пробела, отметьте this . Это, однако, отбросило бы последнее закрытие > в первых двух строках.

Или, если вы хотите захватить текст до секунды ", тогда, возможно, this :

/i18n[^"]+"[^"]+"/g
0 голосов
/ 17 февраля 2020

HTML действительно никогда не следует обрабатывать регулярными выражениями по множеству причин. Если я правильно понимаю, что вы сохраняете атрибуты, начинающиеся с i18n или i18n-, только с помощью sh, тогда используйте DOMParser:

let html = `<button i18n="@@user.button" data-test="download-confirmation_ok">
<a i18n-href="@@link.url" href="https://www.aaaa.es" target="_blank">
<div i18n="@@link.text">www.aaaa.es</div>`;

let parser = new DOMParser();
let doc = parser.parseFromString(html, 'text/html');
var allTags = doc.querySelectorAll("*");
for (let i = 0; i < allTags.length; i++) {
    let aTag = allTags[i];
    for (let j = aTag.attributes.length - 1; j >= 0; j--) {
        let name = aTag.attributes[j].name;
        if (!/^i18n-?/.test(name)) {
            aTag.removeAttribute(name);
        }
    }
}
html = doc.body.innerHTML;
console.log(html);
0 голосов
/ 17 февраля 2020

Как насчет:

(?<=i18n[^=]*?=([\'\"])).*?(?=\1)

Как видно здесь

Объяснение:

Я использую положительный посмотрите здесь, о котором вы можете узнать больше о здесь

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