У меня есть строка, которую я хотел бы разделить, используя #, ., [], or {}
символов, как в CSS. Желаемая функциональность:
- Вход:
"div#foo[bar='value'].baz{text}"
- Выход:
["div", "#foo", "[bar='value'", ".baz", "{text"]
Это достаточно просто, с этим RegEx:
input.match(/([#.\[{]|^.*?)[^#.\[{\]}]*/g)
Однако это не игнорирует синтаксические символы внутри кавычек, как мне бы этого тоже хотелось. (например, "div[bar='value.baz']"
следует игнорировать .
)
Как я могу сделать, чтобы вторая часть моего RegEx (часть [^#.\[{\]}]*
) захватывала не только отрицательный набор символов, но также любой символ в кавычках. Другими словами, как я могу внедрить RegEx, (\"|').+?\1
в мой текущий.
Edit:
Я понял, что регулярное выражение работает достойно, но не может обрабатывать экранированные кавычки внутри кавычек (например: "stuff here \\" quote "
). Если кто-то знает, как это сделать, это будет чрезвычайно полезно:
str.match(/([#.\[{]|^.*?)((['"]).*?\3|[^.#\[\]{\}])*/g);