Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по регулярному выражению (https://javascript.ru/forum/misc/53569-vopros-po-regulyarnomu-vyrazheniyu.html)

ruslan_mart 09.02.2015 14:44

Вопрос по регулярному выражению
 
В общем, такое дело...
Сделал парсер CSS-кода для подсветки синтаксиса:


Собираюсь делать аналогичный для JavaScript кода.
Интересует вопрос, как правильно через регулярку исключить парсинг в кавычках?
Допустим у меня есть некий JS код:
function test() {
   return 'foo';
}

var testStr = 'function test(){return \'foo\'}';


И регулярка, которая обернёт все "function" в <span class="color-pink"></span>.
В данном случае действие применится и к строке. Как более грамотно исключить парсинг строк в кавычках? Кавычки могут быть как двойные, так и одинарные, ещё нужно учесть, что кавычка не экранирована.

Всем спасибо за ответы.:thanks:

ksa 09.02.2015 15:03

Цитата:

Сообщение от Ruslan_xDD
Как более грамотно исключить парсинг строк в кавычках?

Мы, в свое время, просто "прятали" строковые константы... Т.е. меняли их на некие уникальные выражения. Типа

function test() {
   return 'foo';
}

var testStr = 'function test(){return \'foo\'}';

Превращали в

function test() {
   return 'foo';
}

var testStr = ~1~;

А после расскрасски или форматирования текста вставляли строки вместо их "идентификаторов"...

ruslan_mart 09.02.2015 15:13

ksa, есть идея все строки оборачивать в какой-нибудь <span class="code-string"></span>

И в CSS прописывать:
.code-string, .code-string * {
    color: green !important;
}


Т.е., вся строка будет одноцветной, не зависимо от внутренних элементов.
Но мне кажется, что это немного извращённо. :)

Aetae 09.02.2015 15:29

http://javascript.ru/forum/project/4...literalov.html
Цитата:

Сообщение от Ruslan_xDD (Сообщение 355840)
Т.е., вся строка будет одноцветной, не зависимо от внутренних элементов.
Но мне кажется, что это немного извращённо. :)

А если в строке закрывающая скобка например?) Не так всё просто.

ksa 09.02.2015 15:35

Цитата:

Сообщение от Ruslan_xDD
вся строка будет одноцветной, не зависимо от внутренних элементов.
Но мне кажется, что это немного извращённо

Так это же строка... Она вся т.с. "однородная". Просто некая последовательность символов...


Часовой пояс GMT +3, время: 05:48.