Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.08.2012, 13:09
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

регулярка, сцуко >.<
нужна регулярка, которая ставит пробел после каждого символа, но если встречается символ < или &, то до символа > или ; (соответственно) всё пропускается и ставится пробел только после > или ;
Всё, до чего я додумался, но всё равно не так как нужно:
<div id="div"></div>
<script>
function regular(text) {
text = text.replace(/((?:\<\S\>)|(?:\&)[\s\S]+?(?:\<\/\S\>)|(?:\;))|[\s\S]/gim, function(a) {
return a+'&nbsp;'
}) ;
return document.getElementById('div').innerHTML = text ;
} ;
regular('&lt;b&gt;<b>Aa</b>AbAA&lt;/b&gt;') ;
</script>
__________________
★ ²º¹³ ☆

Последний раз редактировалось Hekumok, 23.08.2012 в 13:17.
Ответить с цитированием
  #2 (permalink)  
Старый 23.08.2012, 14:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

function regular(text) {

  var Arr = text.split(/(<[^>]*>|&[^;]*;)/gim);

  var Wstawk = ' '; //'&nbsp;' //Тут поменяешь - если нужен неразрывый пробел

  for(var i=0; i<Arr.length; i++){

     if(Arr[i].search(/<[^>]*>|&[^;]*;/gim)!=-1){

          Arr[i] = Arr[i] + Wstawk;

     } else {

          Arr[i] = Arr[i].replace(/(\S)/gim,'$1' + Wstawk);

     }

  }
  return Arr.join('');

}

alert(regular('&lt;b&gt;<b>Aa</b>AbAA&lt;/b&gt;'));

Последний раз редактировалось Deff, 23.08.2012 в 15:57.
Ответить с цитированием
  #3 (permalink)  
Старый 23.08.2012, 15:25
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Deff, спасибо)))
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #4 (permalink)  
Старый 23.08.2012, 15:40
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

var text = '&lt;b&gt;<b>Aa</b>AbAA&lt;/b&gt;';

alert(
	text.replace( /(?:&..;|<.+?>|\S)/g, '$& ' )
);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #5 (permalink)  
Старый 23.08.2012, 15:53
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

nerv_, +
Красиво ( плюсов нет, - кончились
Ответить с цитированием
  #6 (permalink)  
Старый 23.08.2012, 21:28
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

nerv_, спасибо))) супер, ток мне нужно так:
text.replace(/(?:&.+?;|<.+?>|[\S\s])/gmi, '$& ')

т.к. там может быть и &nbsp; а также после пробела мне тоже нужно ставить пробел да, и скажите, пожалуйста, что значит
'$& '
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #7 (permalink)  
Старый 23.08.2012, 23:32
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Hekumok
что значит '$& '
возвращает найденную строку и добавляет к ней пробел. Тогда уж так
text.replace( /(?:&[\da-z]+?;|<[\S\s]+?>|.)/gim, '$& ' );
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #8 (permalink)  
Старый 24.08.2012, 00:57
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Сообщение от nerv_ Посмотреть сообщение
возвращает найденную строку и добавляет к ней пробел
Не, ну а зачем &? Что он делает?
Сообщение от nerv_ Посмотреть сообщение
Тогда уж так
text.replace( /(?:&[\da-z]+?;|<[\S\s]+?>|.)/gim, '$& ' );
Ну в общем-то да спс
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #9 (permalink)  
Старый 24.08.2012, 01:05
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Hekumok,
$& => найденная подстрока => http://javascript.ru/basic/regular-e...-stroke-zameny
Ответить с цитированием
  #10 (permalink)  
Старый 24.08.2012, 02:46
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Сообщение от Deff Посмотреть сообщение
Hekumok,
$& => найденная подстрока => http://javascript.ru/basic/regular-e...-stroke-zameny
Deff, спс я прост чё-т думал, что $ (а не $&) возвращает найденую подстроку
__________________
★ ²º¹³ ☆
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярка для парсинга SQL запроса Yurik Общие вопросы Javascript 2 09.12.2011 15:08
Регулярка на дробные числа shkarbatov Javascript под браузер 14 29.07.2011 01:05
Странно работает регулярка в JS _axl Общие вопросы Javascript 12 11.03.2011 23:39
Регулярка получаем год greatilya Серверные языки и технологии 5 23.08.2010 04:37
Регулярка не должна воспринимать текст JavaScript в теге Script alexKniaz Общие вопросы Javascript 5 30.10.2009 21:59