Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь с регулярным выражением, Регулярные выражения. 
V
    Опции темы
t77
  Дата 26.4.2010, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Доброе время суток.
Имеется переменная-outputHtmlStr, содержащая html код.
Задача заключается в том, чтобы пробежаться по всему этому html коду, найти тег FONT и заменить значение атрибута SIZE на 7pt.
Тоесть, если на входе мы имеем:
Код

<font size="21pt">
        Text1
    </font>
    <font size="21px">
        Text2
    </font>
    <font size="21%">
        Text3
    </font>
    <font size=21>
        Text3
    </font>

То на выходе должны получить:
Код

<font size="7pt">
        Text1
    </font>
    <font size="7pt">
        Text2
    </font>
    <font size="7pt">
        Text3
    </font>
    <font size="7pt">
        Text3
    </font>

У меня получилась следующая маска:
Код

outputHtmlStr.replace(/(\<font[^\>]+size=)(\s*\'?\"?[0-9\s*a-z%]+\'?\"?\s*)([^\>]*\>)/ig, "$1\'7pt\' $3");

Но она не работает!
Помогите, пожалуйста починить ее.
Принимается более красивый вариант решения.
Заранее благодарю.
PM MAIL   Вверх
Amphiluke
Дата 26.4.2010, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Вот вам альтернатива.
Код

    str = 
        '<font size="21pt">\n' +
        '    Text1\n' +
        '</font>\n' +
        '<font size="21px">\n' +
        '    Text2\n' +
        '</font>\n' +
        '<font size="21%">\n' +
        '    Text3\n' +
        '</font>\n' +
        '<font size=21>\n' +
        '    Text3\n' +
        '</font>';
    
    function changeSizeTo7() {
        var re = /(<font\s+size\s*=\s*["']?)\d+[^"'>]*(["'>]{1}[^<]*<\/font>)/gi;
        alert(str.replace(re, "$1\u0037pt$2"));
    }
    changeSizeTo7();


Ну как, красивее?  smile 
PM   Вверх
t77
  Дата 26.4.2010, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Amphiluke, спасибо вам за ответ.
Честно говоря, красиво !
Судя по всему, вы хорошо разбираетесь в регексах...
Помогите мне советом, как мне овладеть ими. Тоесть с чего начинать, что читать, как их проверять ??

PM MAIL   Вверх
Amphiluke
Дата 26.4.2010, 21:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Эээ... smile

Ну, значит, надо всё заранее распланировать! Где-то за неделю до начала кампании по освоению регулярных выражений нужно разобраться со всеми делами, закончить все незаконченное, запастись продуктами, чтобы потом не отрываться от занятий... Также предупредить всех друзей и знакомых, что вас некоторое время нельзя будет беспокоить, потому что вы будете заняты очень ответственной работой! В заветный день нужно встать рано, принять скорую трапезу, после чего торжественно взгромоздиться в кресло и взять в руки книгу из заранее подготовленной подборки. Например, будем считать, что это Дэвид Флэнаган «JavaScript. Подробное руководство». Внимательно перечитав (можно несколько раз) главу, посвященную регулярным выражениям, сесть за компьютер и перепроверить все примеры кода, которыми автор проиллюстрировал главу. Подумать. Если что-то осталось неясным, вернуться в кресло и прочитать непонятное место еще раз внимательно... Сесть опять за компьютер. Открыть в интернете какой-нибудь ресурс с документацией по JavaScript. Будем считать, что это Core JavaScript 1.5 Guide и в нем глава Regular Expressions. Просмотреть все страницы и соотнести с прочитанным в книжке. Подумать. При необходимости повторить любые действия. Принять скорую трапезу. Посидеть в умном кресле, ощущая как новая информация наполняет жаждущий знаний мозг. Сесть за комп. Попробовать поработать с регулярными выражениями, выдумывая на ходу требования к шаблонам... Следующие несколько дней набивать руку, не отвлекаясь ни на что (благо друзья оповещены заранее о вашем важном занятии).
Считать свое мастерство совершенным, когда удастся выдернуть из «Войны и мира» все предлоги длиной от одного до пяти символов в окружении двух существительных, содержащих букву «а» в позиции 3-5 и какую-нибудь глухую согласную, следующую от нее на расстоянии 0-5 и входящую в суффикс этого слова...



А вообще я не знаю, как для вас лучше осваивать RegExp'ы. smile
PM   Вверх
t77
Дата 26.4.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



 smile 
Amphiluke, попробую почитать Флэнагана , может из этого что то получится. smile 
Спасибо!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.