Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2011, 20:06
Аспирант
Отправить личное сообщение для Beck Посмотреть профиль Найти все сообщения от Beck
 
Регистрация: 08.08.2009
Сообщений: 95

Regexp для замены смайлов иконками
;D;Dte;Dst ;D;D ;Dtest;D;D

Помогите из этой строки заменить на <img>, только те смайлы, которые я выделил жирным текстом.

Я не силен в регулярках, знаю, только самые основы, но их мне не хватает, чтобы справиться с этой задачей.

Хорошая литература по регуляркам в javascript приветствуется так же!

Последний раз редактировалось Beck, 22.02.2011 в 21:08.
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2011, 20:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

А мож не надо усложнять с двойной вложенностью? Накой она нужна?
Меняй тупо по одному - самый надёжный и простой вариант.
str=':D:Dte:Dst (:D)(:D) :Dtest(:D)(:D)(-_-)'
alert(str.replace(/\((:D|-_-)\)/g,'<img src="" alt="$1">'))


Можно конечно сделать как ты хочешь, но не нужно.

Последний раз редактировалось Aetae, 22.02.2011 в 20:42.
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2011, 21:05
Аспирант
Отправить личное сообщение для Beck Посмотреть профиль Найти все сообщения от Beck
 
Регистрация: 08.08.2009
Сообщений: 95

Сообщение от Aetae Посмотреть сообщение
А мож не надо усложнять с двойной вложенностью? Накой она нужна?
Меняй тупо по одному - самый надёжный и простой вариант.
str=':D:Dte:Dst (:D)(:D) :Dtest(:D)(:D)(-_-)'
alert(str.replace(/\((:D|-_-)\)/g,'<img src="" alt="$1">'))


Можно конечно сделать как ты хочешь, но не нужно.
Блин, без скобок , я скобки просто чтобы выделить поставил. Не знаю, как их еще выделить.

Исправил первый пост.

Последний раз редактировалось Beck, 22.02.2011 в 21:08.
Ответить с цитированием
  #4 (permalink)  
Старый 22.02.2011, 21:12
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

А на каком основании Вы их выделяли? Почему четверное ;D выделено,а первое - нет?

var str = ';D;Dte;Dst ;D;D ;Dtest;D;D';
alert( str.replace(/;D\b/gi, '<img />') )
Ответить с цитированием
  #5 (permalink)  
Старый 22.02.2011, 21:21
Аспирант
Отправить личное сообщение для Beck Посмотреть профиль Найти все сообщения от Beck
 
Регистрация: 08.08.2009
Сообщений: 95

Сообщение от B@rmaley.e><e Посмотреть сообщение
А на каком основании Вы их выделяли? Почему четверное ;D выделено,а первое - нет?

var str = ';D;Dte;Dst ;D;D ;Dtest;D;D';
alert( str.replace(/;D\b/gi, '<img />') )
Потому что так работает определение смайликов в скайпе.
Классно, только как теперь первый смайл запретить, если к нему прилегает какая-то буква или цифра или проще, если после него(их) нету пробела.

Последний раз редактировалось Beck, 22.02.2011 в 21:27.
Ответить с цитированием
  #6 (permalink)  
Старый 22.02.2011, 22:04
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Первый ничем не отличается от четвертого (разве что перед последним стоит пробел).
Ответить с цитированием
  #7 (permalink)  
Старый 23.02.2011, 01:11
Аспирант
Отправить личное сообщение для Beck Посмотреть профиль Найти все сообщения от Beck
 
Регистрация: 08.08.2009
Сообщений: 95

Это сложно сделать? Чтобы заменялись смайлы окруженные пробелом и чтобы заменялись смайлы на концах слов?
Ответить с цитированием
  #8 (permalink)  
Старый 23.02.2011, 09:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Beck,
Вариант
var str = ";D;Dte;Dst ;D;D ;Dtest;D;D" ;
 alert(str.replace(/;D(?=(;D)*(\s|$))/gi, '<img />') )
Ответить с цитированием
  #9 (permalink)  
Старый 23.02.2011, 11:49
Аспирант
Отправить личное сообщение для Beck Посмотреть профиль Найти все сообщения от Beck
 
Регистрация: 08.08.2009
Сообщений: 95

Сообщение от рони Посмотреть сообщение
Beck,
Вариант
var str = ";D;Dte;Dst ;D;D ;Dtest;D;D" ;
 alert(str.replace(/;D(?=(;D)*(\s|$))/gi, '<img />') )
Ну вот, то что надо вроде.

Теперь попробую все остальные смайлы подставить в паттерн.

Update - Все пашет, пока как надо. +1 к карме, спасибо.

Последний раз редактировалось Beck, 23.02.2011 в 11:56.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RegExp для новичка Forpost Общие вопросы Javascript 10 01.02.2011 11:58
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Регулярное выражение для поиска смайлов. NightmareZ Общие вопросы Javascript 13 23.06.2009 13:12