Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 30.01.2013, 14:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Deff, да я сам рад, что и у меня хоть что-то стало получаться с этими регулярками...
Уш дюже прикольно они выглядят для неискушенного взгляда. Чистая галиматья! Но поражает их возможноть действия.
Ответить с цитированием
  #22 (permalink)  
Старый 30.01.2013, 14:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ast_ross,
Проще(и удобнее, поскольку можно наращивать) создать массив проверочных слов

далее в цикле создавать из массива регеспы и тестить строку в цикле -

Типовая задача - проверка на цензуру сообщений и вывод слов замены

Последний раз редактировалось Deff, 30.01.2013 в 14:58.
Ответить с цитированием
  #23 (permalink)  
Старый 30.01.2013, 14:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от ast_ross
как в одну ругулярку запихать условие начинается с Корот или начинается с кор или начинается с метражка в общем проверка не на одно а несколько возможных вариантов
А там есть "перечисляемый" символ |
Цитата:
x|y Находит x или y. Например,
/green|red/
найдет 'green' в "green apple" и 'red' в "red apple."
http://javascript.ru/RegExp
Ответить с цитированием
  #24 (permalink)  
Старый 30.01.2013, 15:45
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

видимо я кривой или что??? Не работает эта регулярка во втором случае... что делать...
var s='начало<p>Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>';
var val='Коротком';
var r=new RegExp('^(<[^>]+>)?('+val+')','');
alert(s.replace(r,'$1($2)'));
var s='<p><b>Короткометражки</b> с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>';
alert(s.replace(r,'$1($2)'));
Ответить с цитированием
  #25 (permalink)  
Старый 30.01.2013, 16:27
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

ну кто нибудь подкиньте регулярку удовлетворяющую условию <p> или <p><b> или сколь угодно html тегов пробовал <\/?\w[^>]*> не работает
Ответить с цитированием
  #26 (permalink)  
Старый 30.01.2013, 17:03
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

кто пояснит почему в $1 содержится только <i> а не <p><b></b><i>

var s='<p><b></b><i>Короткометражки</i> с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>';
var val='Коротком';
var r=new RegExp('^(<[^>]+>){1,}?('+val+')','');
alert(s.replace(r,'$1($2)'));
Ответить с цитированием
  #27 (permalink)  
Старый 30.01.2013, 17:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ast_ross,
Выразите точно условия
Ответить с цитированием
  #28 (permalink)  
Старый 31.01.2013, 07:02
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

Нужно заменить часть строки на такую же, только с оберткой типа
<span class='highlight'>mytext</span>
в случае если текст начинается с искомой строки.
При этом необходимо проигнорировать (если они имеются) теги html.
Т.е. к примеру искомое слово ко:

Вариант 1:
<!-- исходный текст: -->
Короткометражки с ориентацией на классику немой комедии.

<!-- после обработки: -->
<span class='highlight'>Ко</span>роткометражки с ориентацией на классику немой комедии.


Вариант 2:
<!-- исходный текст: -->
<p><b>Короткометражки</b> с ориентацией на классику немой комедии.</p>

<!-- после обработки: -->
<p><b><span class='highlight'>Ко</span>роткометражки</b> с ориентацией на классику немой комедии.</p>


Вариант 3: (ничего не изменится так не начинается на "ко")
<!-- исходный текст: -->
<p>Новые <b>короткометражки</b> с ориентацией на классику немой комедии.</p>

<!-- после обработки: -->
<p>Новые <b>короткометражки</b> с ориентацией на классику немой комедии.</p>


Вариант 4: (посложнее)
<!-- исходный текст: -->
<p><b>К</b>ороткометражки с ориентацией на классику немой комедии.</p>

<!-- после обработки: -->
<p><span class='highlight'><b>К</b>о</span>роткометражки с ориентацией на классику немой комедии.</p>

<!-- после обработки: (другой вариант) -->
<p><b><span class='highlight'>К</span></b><span class='highlight'>о</span>роткометражки с ориентацией на классику немой комедии.</p>



Все эти варианты должны быть описаны одной регуляркой.
Ну и то же самое только для условия "заканчивается на".

Последний раз редактировалось ast_ross, 31.01.2013 в 07:04. Причина: дополнение
Ответить с цитированием
  #29 (permalink)  
Старый 31.01.2013, 09:35
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

function transF(str){
return str.replace(/^(<p>)?(<b>)(Ко(?!<))|(<b>К<\/b>о|Ко)/gm,'$1$2<span class="highlight">$3$4</span>');
}
alert(transF('<p><b>Короткометражки</b> с ориентацией на классику немой комедии.</p>'));
alert(transF('<p><b>К</b>ороткометражки с ориентацией на классику немой комедии.</p>'));
alert(transF('Короткометражки с ориентацией на классику немой комедии.'));
alert(transF('<p>Новые <b>короткометражки</b> с ориентацией на классику немой комедии.</p>'));

Последний раз редактировалось Deff, 31.01.2013 в 10:03.
Ответить с цитированием
  #30 (permalink)  
Старый 31.01.2013, 11:01
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

я вижу что в регулярке жестко указанны варианты тегов и их вариации, а можно ли составить так что бы не имело значение ни то какие теги и какое их количество идет перед текстом?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с регуляркой shtormIK Общие вопросы Javascript 6 26.06.2012 20:02
Помогите плз с регуляркой zsaz jQuery 1 25.05.2012 18:41
помогите с регуляркой ... motoroller Элементы интерфейса 1 23.11.2009 22:01
помогите с регуляркой Holod Общие вопросы Javascript 1 19.08.2009 12:02
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16