powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] RegExp
15 сообщений из 15, страница 1 из 1
[JS] RegExp
    #35376984
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача - сделать на клиенте преобразование BB тега
Код:
1.
2.
3.
4.
5.
6.
7.
 в тег <pre> (Не говорите мне, что это нужно делать на сервере - нужно именно на клиенте)

Теперь конккретней - есть некоторая строка и n пар начальных и конечных тегов требуется заменить начальный и ближайший конечный соответствующий тег на <pre></pre>. Если начального или конечного тега нет, то ничего не делать. Сейчас делаю так
 [code=plaintext]re1 = /(tag1(?=.*end_tag1))|(tagn(?=.*end_tagn))/ig;
re2 = /(end_tag1)|(end_tagn)/ig;
str = str.replace(re1, '<pre>');
str = str.replace(re2, '</pre>');
Но это криво, да и заменяет конечный тег не смотря на начальный. Посоветуйте, что нибудь

P.S. Данная строка лежит в диве и ее туда же нужно записать. Сейчас для этого используется innerHTML, но думается, что лучше использовать DOM

С уважением, Vasilisk
...
Рейтинг: 0 / 0
[JS] RegExp
    #35377151
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне так кажется, что регексп и не нужен. Бегай или по чилдренам своего дива или по коллекции элементов и если элемент.tagName==code, то криатишь элемент PRE, присваиваешь ему иннерХТМЛ - и свапНоде.
...
Рейтинг: 0 / 0
[JS] RegExp
    #35377253
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_есть некоторая строка и n пар начальных и конечных тегов требуется заменить начальный и ближайший конечный соответствующий тег на <pre></pre>. Если начального или конечного тега нет, то ничего не делать
Код: plaintext
var str = "123 [code]test_code
456";
alert(str.replace(/\
Код: \
(.*?)\[\/code\]/g, '<pre>\$1</pre>'));
...
Рейтинг: 0 / 0
[JS] RegExp
    #35377420
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeМне так кажется, что регексп и не нужен. Бегай или по чилдренам своего дива
Нет у него чилдренов. Одна строка без HTML тегов

2Illion Большое спасибо, сейчас проверю
...
Рейтинг: 0 / 0
[JS] RegExp
    #35377494
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illion
А как задать набор пар одним регекспом?

Так делать не хочется.
Код: plaintext
var str = "123 [code]test_code
456 [src]Test_src[/ src]";
str = str.replace(/\
Код: \
1.
2.
(.*?)\[\/code\]/g, '<pre>\$1</pre>');
str = str.replace(/\[src\](.*?)\[\/src\]/g, '<pre>\$1</pre>');
alert(str);
Кроме того, что строка будет сканироваться несколько раз, так еще и для строки
Код: plaintext
var str = "123 [code]test_code[src]
456 Test_src[/ src]"; Получится не
Код: plaintext
var str = "123 <pre>test_code[src]</pre> 456 Test_src[/ src]";
а
Код: plaintext
var str = "123 <pre>test_code<pre></pre> 456 Test_src</pre>";

А если сделать так
Код: plaintext
str = str.replace(/(\[code\])|(\[src\])(.*?)\([\/code\])|([\/src\])/g, '<pre>\$3</pre>');
То для строки
Код: plaintext
var str = "123 [code]test_code[/ src]
"; все попутается

А если так
Код: plaintext
str = str.replace(/(\[code\](.*?)\[\/code\])|(\[src\](.*?)\[\/src\])/g, '<pre>\$1</pre>');
То не понятно какой индекс нужно использовать
...
Рейтинг: 0 / 0
[JS] RegExp
    #35377540
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, вопроса не понял.
...
Рейтинг: 0 / 0
[JS] RegExp
    #35377618
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_для строки
Код: plaintext
var str = "123 [code]test_code[src]
456 Test_src[/ src]"; Получится не
Код: plaintext
var str = "123 <pre>test_code[src]</pre> 456 Test_src[/ src]";
а
Код: plaintext
var str = "123 <pre>test_code<pre></pre> 456 Test_src</pre>";


Код: plaintext
str.replace(/\[(code|src)\](.*?)\[\/\ 1 \]/g, '<pre>\$2</pre>')
...
Рейтинг: 0 / 0
[JS] RegExp
    #35377630
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и для "123
Код:
test_code[/ src]
" это тоже подойдет. Если я конечно правильно понимаю, что получить надо.
...
Рейтинг: 0 / 0
[JS] RegExp
    #35378514
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо. Вроде все работает :)

С уважением, Vasilisk
...
Рейтинг: 0 / 0
[JS] RegExp
    #35379056
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё к этому же вопросу...
Есть у нас там такое:
Код: plaintext
str.replace(/\[(code|src)\](.*?)\[\/\ 1 \]/g, '<pre>\$2</pre>')
А вот как бы нам изначально (?) выделить тот кусок, который \$2?..
Типа, для того, чтобы ещё и только над ним потом (?) "поиздеваться" :) и не "разукрашивать" весь HTML, а только то, что внутри
Код: plaintext
[ code][ /code]
...
...
Рейтинг: 0 / 0
[JS] RegExp
    #35380273
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zirra
А вот как бы нам изначально (?) выделить тот кусок, который \$2?..
Типа, для того, чтобы ещё и только над ним потом (?) "поиздеваться" :)
приведите конкретный пример. Потому что если получить $2 в отдельную переменную и произвести над ней ряд операций модификации, то новое значение нужно будет каким-то образом потом подставить в строку обратно.
...
Рейтинг: 0 / 0
[JS] RegExp
    #35380459
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется в виду, что-то типа этого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function f2c(s) {
  var test = /(\d+(\.\d*)?)F\b/g;    //Initialize pattern.
  return(s.replace
    (test,
      function($ 0 ,$ 1 ,$ 2 ) { 
        return((($ 1 - 32 ) *  5 / 9 ) + "C");
      }
    )
  );
Но я такое нашел только в MSDN и не понятно насколько это кросс-браузерно?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
[JS] RegExp
    #35381496
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Имеется в виду, что-то типа этого
...
Но я такое нашел только в MSDN и не понятно насколько это кросс-браузерно?


можно и так. Вполне кроссбраузерно (могу говорить только об ие, опере и фф).

Код: plaintext
1.
2.
3.
4.
function test(str)
{
	return str.replace(/_/g, '+');
}
var str="123 [code]test_code
456
Код:
t_e_s_t_c_o_d_e
789";
str=str.replace(/\[(code|src)\](.*?)\[\/\ 1 \]/g, function($ 0 ,$ 1 ,$ 2 ){return '<pre>'+test($ 2 )+'</pre>';} );
alert(str);
...
Рейтинг: 0 / 0
[JS] RegExp
    #35383968
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросик.

В Delphi числа в hex кодировке предваряются знаком $. Проблема в следующем - если я пишу регексп
Код: plaintext
/\d+|\$[ 0 -9A-F]+/ig
То он срабатывает на строку Test123. Если же я по бокам ставлю \b
Код: plaintext
/\b(\d+|\$[ 0 -9A-F]+)\b/ig
то этот \b съедает $ и строка
Код: plaintext
Test := $AF;
проопускается. Как быть?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
[JS] RegExp
    #35383992
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставил так
Код: plaintext
/(?=\W|\b)(\d+|\$[ 0 -9A-F]+)(?=\W|\b)/ig]
вроде работает (без \b не распознаются числа в десятичной системе)

С уважением, Vasilisk
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] RegExp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]