Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Рег.выражения, подсветка кода (https://javascript.ru/forum/events/15176-reg-vyrazheniya-podsvetka-koda.html)

lynch1 15.02.2011 19:33

Рег.выражения, подсветка кода
 
Вложений: 1
Проблема в руках так скажем. Первый день за javascript =) Делаю модуль для сайта - подсветка кода. Всё работает за исключением этого проблемного куска:
...
data = code_block[i].innerHTML;
...
//Обрабатываем строки
data = data.replace(/(['`].*['`])/gi,'<span class="strings">$1</span>');
//Комментарии
data = data.replace(/(\/\*.*\*\/)/gi,'<span class="comments">$1</span>');
...
code_block[i].innerHTML = data;
...


Фрагмент кода на странице:
/*Комментарий*/;
'строка';
/*Коментарий*/'и строка';
/* ' Комментарий*/'и строка =(\';


Результат:
http://javascript.ru/forum/attachmen...1&d=1297786989

4-ая строка должна быть как 3-яя, не пойму как исправлять.

И ещё вопрос тудаже: как подсветить комментарии в несколько строк? Пример:
/* Комент
Комент
Комент */

Пробовал в параметрах replase ставить /m , но не помогло...пробовал вначале обработки переводить всё в 1 строку (заменять переносы на другой символ), обрабатывать и потом восстанавливать...но как-то тоже криво было...

Буду рад советам и любым ответам. Спасибо.

B@rmaley.e><e 15.02.2011 19:45

Почитайте про жадность регэкспов.

lynch1 15.02.2011 20:17

Спасибо, некоторый плюс дало, второй вопрос по многоуровневым коментариям отпал. По первому получилось чуть лучше, в 4-ой строке кусок 'и строка=('; теперь не зелёный а нейтральный (должен быть синим)...

lynch1 15.02.2011 20:39

Сори...не дал ксс чтоб цвета разделять. Вобщем class="comments" зелёный, а class="strings" синий.

neptun 17.12.2012 07:13

Доброго всем времени суток а не подскажете мне регулярное выражение для строки типа:

var rex = ?;
var txt = <option>Сидоров Петр Ильич<option>Самойлов Николоай Федоврович<option>Дубиков Леонид Васильевич<option>Петров Андрей Батькович

rex.exec(txt);

//Надо получить примерно следующее:

Сидоров Петр ИльичСамойлов Николай ФедоровичДубиков Леонид ВасильевичПетров Андрей Батькович


заранее Спасибо буду признателен до глубины

cyber 17.12.2012 10:25

neptun,
txt.split("<option>")

neptun 17.12.2012 20:04

Спасибо тебе друг мне как раз нужен был массив в выводе так что ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ тебе СПАСИБО

var Array = txt.split("<option>");


это то что мне нужно...


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