Обнаруживать текст между ключами открытыми и закрывшие в javascript [закрывшая]

Как я могу обнаруживать когда ключ { он открывается, и когда он закрывается }? То, чего я хочу добиться, состоит в том, чтобы обнаруживать открытие и завершение ключей, но также мне хотелось бы мочь обнаруживать контент внутри них.

Пример:

{#f66} o {red}

Ожидаемый результат:

  1. Ключи: {#f66} и {red}.
  2. И контент: #f66 и red.
3
задан 28.11.2016, 04:19
3 ответа

Регулярное выражение:

/{([^}]*)}/g

Decripción:

  • { - Совпади с открытием буквального ключа
  • ([^}]*) - Группа 1 - Записывает стоимость текста, с которым он совпал в retrorreferencia. Совпади с:
    • [^}]* - Любой характер, который не был бы одной }, повторенный 0 или более раз
  • } - Совпади с завершением буквального ключа


Использовав группу (со скобками), результат RegExp.exec (), это будет array со всем совпадением в индексе 0, и результате первой группы в индексе 1 (или больше, если мы использовали больше групп).

Код:

const texto = "{#f66} o {red}",
      regex = /{([^}]*)}/g;
var grupos;

while ((grupos = regex.exec(texto)) !== null) {
  console.log("Llaves:", grupos[0], "\tPosición:", grupos.index, "\tColor:", grupos[1]);
}
3
ответ дан 24.11.2019, 12:21

Для atom и мочь знать, находится ли твой синтаксис хорошо в языке сценариев JavaScript tenes jslint Для темы цветов tenes другой plugin для Atom, которого называются цвет - picker. Обрежь находить их после того, как искать в Atom

1
ответ дан 24.11.2019, 12:21

Если я понял хорошо, ты хочешь обнаружить стоимость, которая есть внутри ключей, что ты можешь делать, состоит в том, чтобы использовать регулярное выражение и метод match что обнаружил ключ открытия {, прочитайте то, что есть внутри (помещая это в скобку) и потом задвижка {.

Немного как это /{(.*)}/ который ты можешь видеть здесь:

var aux = "{#f00}";

var color = aux.match(/{(.*)}/);

console.log(color);

Это возвратит тебе array с цепью, которая выполнила условие и стоимость внутри ключей.

0
ответ дан 24.11.2019, 12:21
  • 1
    Если немного немного así я хочу добиться этого он что я говорю в этом вопросе es.stackoverflow.com/questions/35437/… – Rimuru Tempest 28.11.2016, 03:31
  • 2
    Чтобы мочь давать ему цвет тексту, уже будьте в полужирном шрифте, италике, соединениях, tí tulos костлявая этикетки h1, h2, h3, и т.д. – Rimuru Tempest 28.11.2016, 03:32
  • 3
    Прямо сейчас не sé если está вопрос - дубликат или " spam" чтобы привлекать atenció n в твой другой вопрос. – Alvaro Montoro♦ 28.11.2016, 03:37
  • 4
    @Alvaro Тема с этой expresió n дело в том, что механизм regex - жаждущие , а следовательно .* пробует встречаться со всем тем, что может (включая mú ltiples ключи). Чтобы это предотвращать, возможно использовать .*?, которые меняют поведение repetició n, o [^}]* (предпочтительный в этих случаях) – Mariano 28.11.2016, 03:46
  • 5
    @Mariano +1 в комментарий (уже я дал это тебе в ответе). Cambiarí в có я говорю, но тогда serí в равный твоему... и я немного ленивый этой ночью в воскресенье :P – Alvaro Montoro♦ 28.11.2016, 03:58