Почему этот тестер сущностей regex/DOM возвращает значение undefined?
var str = 'let us pretend that this is a blog about gardening&cooking; here's an apostrophe & ampersand just for fun.';
Это строка, над которой я работаю. Желаемый конечный результат: "let us pretend that this is a blog about gardening&cooking; here's an apostrophe & ampersand just for fun."
console.log('Before: ' + str);
str = str.replace(/&(?:#x?)?[0-9a-z]+;?/gi, function(m){
var d = document.createElement('div');
console.log(m);
d.innerHTML = m.replace(/&/, '&');
console.log(d.innerHTML + '|' + d.textContent);
return !!d.textContent.match(m.replace(/&/, '&')[0]) ? m : d.textContent;
});
console.log('After: ' + str);
2 ответа
Проблема в том, что HTML не поддерживает XML '
Чтобы избежать проблемы, вы должны использовать '
вместо '
Для получения дополнительной информации смотрите этот пост:
Почему не стоит '
быть использованы для избежания одинарных кавычек?
Это должно делать то, что вы хотите:
str.replace(/&([#x]\d+;|[a-z]+;)/g, "&$1")
или с положительным взглядом:
str.replace(/&(?=[#x]\d+;|[a-z]+;)/g, "&")
Я не думаю, что вам нужно HTML2text en-/decoding.