Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: регулярное выражение на JS

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Незнаю как написать.
kuzya
Отправлено: 14 Июня, 2007 - 17:04:34
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Февр. 2007  


Помог: 0 раз(а)




Имеется следующая проблема - есть текст, например "1 f 1 1 g" дак вот в нём надо все "1" заменить например на "21" (в итоге дожно получится "21 f 21 21 g"). При этом надо сделать так, что бы цифра 2 подставлялась только к тем единицам к которым она ещё не приставлена. Вот не могу никак составить такое регулярное выражение типа "искать 1 перед которой не стоит 2".
Незнаю понятно или нет обьяснил, но если кто понял - помогите плиз.
 
 Top
valenok
Отправлено: 14 Июня, 2007 - 23:34:46
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




оно не будет проходить по строке два раза.
PHP:
скопировать код в буфер обмена
  1.  
  2. str = str.replace(/1/gi,"21");
  3.  



-----
Truly yours, Sasha.
 
My status
 Top
kuzya
Отправлено: 15 Июня, 2007 - 04:20:32
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Февр. 2007  


Помог: 0 раз(а)




Цитата:

оно не будет проходить по строке два раза.

Дело в том что выражение раза 3-4 через функцию проходит.
 
 Top
valenok
Отправлено: 15 Июня, 2007 - 10:26:32
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Ну тогда думаем думаем и приходим к выводу что нужно заменять комбинацию [пробел][один][пробел] на [пробел][два][один][пробел]
но так как в начале строки и вконце у нас нет пробелов перед и после однёрок, то придётся их сначала добавить вручную потом срезать,
так как я не помню как правильно использовать синтаксис регулярок в ява скриптах, а руководства далеко - можно сделать по хитрее.
Заменить все однёрки на 21 а потом заменить 22221 на 21

PHP:
скопировать код в буфер обмена
  1.  
  2. < script>
  3. var str = "1 f 1 1 g";
  4. var rep ='';
  5.  
  6. c = 522;
  7. for(i=0;i<c;i++){
  8.         str = str.replace(/1/gi,"21");  
  9.         rep = '2' + rep;
  10. }
  11.  
  12.  
  13. rep = rep + '1';
  14.  
  15.         var regexp = "("+rep+")";
  16.         var patern =  new RegExp(regexp,"ig");
  17.  
  18. str = str.replace(patern,"21");
  19.  
  20. alert(str);
  21. </script>
  22.  

\n\n(Добавление)
ещё вариант это следующей регуляркой:
PHP:
скопировать код в буфер обмена
  1.  
  2. <script>
  3. var str = "1 f 1 1 g";
  4.  
  5. c = 12;
  6. for(i=0;i<c;i++){
  7.         str = str.replace(/(^1)|( 1 )|( 1$)/," 21 ");
  8. }
  9.  
  10. alert(str);
  11. </script>
  12.  

Тоесть заменять однёрку в начале строки, пробел один пробел в середине и пробел 1 в конце.
Вопрос только на что заменять =)
Вариант выше оставляет лишние пробелы.
Его можно разделить на три отдельных регулярки также:

PHP:
скопировать код в буфер обмена
  1.  
  2. <script>
  3. var str = "1 f 1 1 g";
  4. var rep ='';
  5.  
  6. c = 12;
  7. for(i=0;i<c;i++){
  8.         str = str.replace(/(^1)/,"21");
  9.         str = str.replace(/ 1 /," 21 ");
  10.         str = str.replace(/( 1$)/," 21");
  11. }
  12.  
  13.  
  14.  
  15.  
  16. alert(str);
  17. </script>
  18.  


-----
Truly yours, Sasha.
 
My status
 Top
kuzya
Отправлено: 15 Июня, 2007 - 21:48:48
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Февр. 2007  


Помог: 0 раз(а)




Спс, щас попытаюсь переварить вышеописанное.=)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB