Regex Group исключает подстроку внутри группы - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь удалить некоторые html-сущности, и для этого я изменил небольшой фрагмент кода, который нашел где-то на SO (что делает обратное). Теперь у меня проблема в том, что шестнадцатеричные и декартовые представления экранированных символов, по-видимому, имеют произвольное количество начальных нулей. Естественно, я хочу исключить эти нули для поиска того же символа, будь то &x0022; или просто &x22;. В настоящее время мой код выглядит так:

var entityMapRev = {
    'amp': '&',
    'lt': '<',
    'gt': '>',
    'quot': '"',
    '#34': '"',
    '#38': '&',
    '#39': '\'',
    '#60': '<',
    '#62': '>',
    '#91': '[',
    '#93': ']',
    '#x22': '"',
    '#x26': '&',
    '#x27': '\'',
    '#x2F': '/',
    '#x60': '`',
    '#x3C': '<',
    '#x3D': '=',
    '#x3E': '>',
    '#x5B': '[',
    '#x5D': ']',
};
function unescapeHtml (string) {
    return String(string).replace(/&#0*(\d+?);/g, function (s,p1) {
        return entityMapRev['#'+p1];
    }).replace(/&#x0*(\d+?);/g, function (s,p1) {
        return entityMapRev['#x'+p1];
    }).replace(/&(.+?);/g, function (s,p1) {
        return entityMapRev[p1];
    });
}

Как видите, сначала он пробует десятичные представления, затем в шестнадцатеричном, а затем записывается.

Теперь мой вопрос, могу ли я сделать это в одном регулярном выражении? Я знаю, как сделать так, чтобы это совпадало с любой формой, но тогда у меня есть проблема с тем, что группы по-прежнему содержат нули, что не работает с моим текущим поиском.

Если это невозможно, кто-нибудь знает лучший способ сделать это?

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