Цитата:
|
Может, стоит использовать CSS-парсер?
|
Ну если таки писать именно регулярки - я бы сделал как-то так:) :
var css='background-image: url("http://mysite.ru:8080/img/environm;ent:/circle_portret2.jpg"); position: absolute; top: 73px; left: 93px; background-position: 0px 0px; background-repeat: initial initial; '; var out = {}; css.replace(/(?:^|;)\s*([-a-z]+)\s*:\s*([\s\S]*?)\s*(?=;(?![^(]*\))(?![^{]*\})|$)/gi,function(a,b,c){out[b] = c}) console.log(out) Выглядит страшно, и не факт что какие-то грабли не упущены.) ixth, во маньяки.)) Я конечно могу представить для чего он может понадобиться, но всё равно...) |
ksa
Цитата:
ixth Не хилая такая библиотечка, слишком сурово для моей задачи. Aetae А можно пояснения некоторые? В плане обучения так сказать. Я понял всё до знака "*?", что это значит, это какое-то особое условие повторения? И это условие зависит от того что идёт в регулярке дальше? И ещё совсем не понятно для чего вот эта часть "(?![^(]*\))(?![^{]*\})" - типа, если найдёшь эти символы, их не учитывай, или как это перевести на Русский правильно? |
:\s*([\s\S]*?)\s*(?=;(?![^(]*\))(?![^{]*\})|$)
[\s\S]*? - любые символы, до тех пор пока ?=;(?![^(]*\)) - за ними встретится ";" за которой не идёт ")" без предшествующей ей "(". Как-то так.) Вообще по regexp куча статей(а также моих и не только ответов на этом форуме) - и именно сейчас мне лень в сотый раз расписывать, лучше погуглите.) P.S. Ещё раз на всякий предупреждаю - вариант наверняка с граблями, и на каком-то случае может загнуться. Я такое обычно использую только при разовой работе для себя. |
Цитата:
|
Aetae,
Цитата:
|
Часовой пояс GMT +3, время: 07:15. |