Как я могу создать регулярное выражение, которое может выбирать слова, которые не начинаются с «#» или «.» - PullRequest
2 голосов
/ 27 марта 2019

Я хочу создать функцию JavaScript, которая может просматривать строку селекторов CSS и выбирать элементы, являющиеся именами тегов (body, p, h1), из других селекторов, таких как идентификаторы и классы (#test .test1). )

Примером может служить строка: "span # a53195yio1rnin6d2t9 div.first"

будет возвращать только span и div, оставляя остальные

Это то, что у меня есть, но оно выбирает все после '#' или '.'

(\ б (# |?!.) \ Ш +) \ б

1 Ответ

3 голосов
/ 27 марта 2019

Если ваша среда поддерживает просмотр за спиной, просто посмотрите за пробелом или началом строки:

const str = "span#a53195yio1rnin6d2t9 div.first";
console.log(
  str.match(/(?:^|(?<= ))\w+/gm)
);

В противном случае, если вам нужно поддерживать более старые браузеры, вам придется выполнять итерации вручную - совпадение начало строки или пробел, затем захват следующий введите слова в группу и извлеките эту группу захвата:

const str = "span#a53195yio1rnin6d2t9 div.first";
const re = /(?:^| )(\w+)/gm;
const matches = [];
let match;
while (match = re.exec(str)) {
  matches.push(match[1]);
}
console.log(matches);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...