Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.07.2011, 04:13
Интересующийся
Отправить личное сообщение для serhanters Посмотреть профиль Найти все сообщения от serhanters
 
Регистрация: 23.04.2011
Сообщений: 26

помогите пожалуйста с регулярным выражением
Здраствуйте!

Из базы данных я получаю строку вида - rgba(255,255,255,0.9)

написал шаблон регулярного выражения который выберает данный вид
^rgba\(([01]?\d\d?|2[0-4]\d|25[0-5])\,([01]?\d\d?|2[0-4]\d|25[0-5])\,([01]?\d\d?|2[0-4]\d|25[0-5])\,([1]|[0].[0-9]+)\)$


теперь вот вопросс, скажите, а как мне теперь преобразовать строку rgba(255,255,255,0.9) в такой вид - 'rgba',{r:255,g:255,b:255,a:0.9}

пожалуйста помогите очень нужно=( всем зараннее огромное спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 12.07.2011, 12:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Вариант ...
var reg = /^(rgba)\(([01]?\d\d?|2[0-4]\d|25[0-5])\,([01]?\d\d?|2[0-4]\d|25[0-5])\,([01]?\d\d?|2[0-4]\d|25[0-5])\,([1]|[0].[0-9]+)\)$/;
var str = 'rgba(255,255,255,0.9)';
var arr = str.match(reg);
if (arr) str = arr[1]+',{r:'+arr[2]+',g:'+arr[3]+',b:'+arr[4]+',a:'+arr[5]+'}';
alert(str)
Ответить с цитированием
  #3 (permalink)  
Старый 12.07.2011, 12:41
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

почему уж тогда не replace, короче будет:
str.replace(reg, "'rgba',{r:$1,g:$2,b:$3,a:$4}")
Ответить с цитированием
  #4 (permalink)  
Старый 12.07.2011, 17:13
Интересующийся
Отправить личное сообщение для serhanters Посмотреть профиль Найти все сообщения от serhanters
 
Регистрация: 23.04.2011
Сообщений: 26

спасибо рони, то что нужно, заодно могу делать математические операции, а мне какраз это и нужно=)

ваый, этот вариант я пробовал, но ничего не вышло
Ответить с цитированием
  #5 (permalink)  
Старый 12.07.2011, 18:28
Новичок на форуме
Отправить личное сообщение для Jack_White Посмотреть профиль Найти все сообщения от Jack_White
 
Регистрация: 12.07.2011
Сообщений: 7

var lastR='';var r1='';
var r='rgba(255,255,255,0.9)';
r=r.replace(')','}');
lastR=r.indexOf(',');
r1=r.substring('0',(lastR+1))+'g:';
r=r.substr(lastR+1);
r1+=r.substring(r,r.indexOf(',')+1)+'b:'+r.substring((r.indexOf(',')+1),r.lastIndexOf(',')+1)+'a:'+r.substr(r.lastIndexOf(',')+1);
r1=r1.replace('rgba(','rgba,{r:');
alert(r1);

Вроде так)))

Последний раз редактировалось Jack_White, 12.07.2011 в 18:33.
Ответить с цитированием
  #6 (permalink)  
Старый 12.07.2011, 18:33
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от Jack_White Посмотреть сообщение
var lastR='';var r1='';
var r='rgba(255,255,255,0.9)';
r=r.replace(')','}');
lastR=r.indexOf(',');
r1=r.substring('0',(lastR+1));
r1+='g:';
r=r.substr(lastR+1);
r1+=r.substring(r,r.indexOf(',')+1)+'b:'+r.substring((r.indexOf(',')+1),r.lastIndexOf(',')+1)+'a:'+r.substr(r.lastIndexOf(',')+1);
r1=r1.replace('rgba(','rgba,{r:');
alert(r1);

Вроде так)))
Ответить с цитированием
  #7 (permalink)  
Старый 12.07.2011, 18:35
Новичок на форуме
Отправить личное сообщение для Jack_White Посмотреть профиль Найти все сообщения от Jack_White
 
Регистрация: 12.07.2011
Сообщений: 7

Сообщение от ваый Посмотреть сообщение
Чего?
Ответить с цитированием
  #8 (permalink)  
Старый 12.07.2011, 18:45
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

ну, я оценил чувство юмора. это же замечательно.
но это же не всерьез, да?
Ответить с цитированием
  #9 (permalink)  
Старый 12.07.2011, 19:17
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

var array = ['rgba', {}], 
	expr = 'rgba(255,255,255,0.9)'.match(/[\d.]+/g),
	i = expr.length;

while(i--) {
	array[1][array[0].split(/\.*/)[i]] = expr[i];
}

alert(array); //array.toSource(): ['rgba', {r:255, g:255, b:255, a:0.9}]

Последний раз редактировалось monolithed, 12.07.2011 в 22:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста я новичок! NemzevDanil Общие вопросы Javascript 3 02.02.2011 19:23
Помогите пожалуйста я новичок! NemzevDanil Элементы интерфейса 0 02.02.2011 00:00
помогите пожалуйста с кодом, который отмечает область на картинке 500rublei Общие вопросы Javascript 1 04.04.2010 13:04
Извлечь значение параметра из location.search регулярным выражением? Бобр Общие вопросы Javascript 8 26.01.2010 01:01
Помогите, пожалуйста! rzhsasha Ваши сайты и скрипты 2 20.07.2009 21:07