Регулярное выражение - выберите обратное - PullRequest
0 голосов
/ 15 мая 2019

У меня возникли проблемы при выборе противоположности тому, что я выбрал ранее

Строка:

<!-- Button --><div><button></div><!-- Input --><input type="text">

Мне удалось выбрать комментарии, используя:

/<!--[\s\w]*-->/

Теперь я хочу выбрать все, кроме комментариев.Желаемый вывод

<div><button></div> and <input type="text">

Мой вопрос: какой будет строка поиска Regex для выбора ранее упомянутого вывода?

Ответы [ 3 ]

2 голосов
/ 15 мая 2019

Я считаю, что js-эквивалент php preg_split с PREG_SPLIT_NO_EMPTY выглядит следующим образом:

yourstring.split(/<!--[\s\w]*-->/g).filter(n => n)

jsfiddle: https://jsfiddle.net/75rLaeoj/

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

1 голос
/ 15 мая 2019

Простой способ получить обратное - заменить выбор регулярного выражения:

let html = '<!-- Button --><div><button></div><!-- Input --><input type="text">'

let noComments = html.replace(/<!--[\s\w]*-->/g,"") 

console.log(noComments) //<div><button></div><input type="text">
0 голосов
/ 15 мая 2019

Я понял, у меня раньше были проблемы с Regex, только выбирающим первый экземпляр, но я обнаружил, что мне не хватает глобального тега /.../g

Ответ для получения обратного: /<[^!]*?>.*?>/g

var s = '<!-- Button --><div><button></div><!-- Input --><input type="text">'
console.log(s.match(/<[^!]*?>/g))

Ссылка: https://javascript.info/regexp-greedy-and-lazy

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