Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Мой RegExp для поиска цветов. (https://javascript.ru/forum/project/27763-mojj-regexp-dlya-poiska-cvetov.html)

melky 24.04.2012 19:59

Цитата:

Сообщение от trikadin (Сообщение 171030)
melky, надоест) А твои варианты?)

есть тут одна идея :)

псевдокод :
var значение = /*2px, 3345PX, 62in, 3%, 5* .. значение, короче/;
if( верное(значение) ){
    результат = рега.exec(значение); 
}

function верное( значение ){
    // проверить посредством HTML (элемент)
}

код :

PS затестите, пожалуйста, в виндовых браузерах. у меня под рукой только FF и CH
function parseValue(){

    var 
        dummy = document.createElement('b'),
        reg = /(\d+)(%|\w*)/;

    parseValue = function(value){
        if(parseValue.isNormal(value)){
            reg.exec(value);
            return { value: RegExp.$1, dimension: RegExp.$2 };
        }
    };

    parseValue.isNormal = function(value){
        if(value === "0") {
            return true; // "чистый" нуль все вертят, как хотят.
        } else {
            // IE FIX : он метает ошибку, если значение неверное.
            try {
                dummy.style.fontSize = value;  
            } catch(e) {
                return false; // если неверное значение, IE породит ошибку (итог: значение неверное)
            }
            return dummy.style.fontSize === value;
        }
    };

    return parseValue.apply(this, arguments);
}

var a="1px 2in 4% 0 0px 0% 65334em СТОЛpx ы%".split(' ');
var i = 0;
var parsed;
while(i in a){  
    parsed = parseValue(a[i]);
    a[i] = a[i++]+" => "+ (parsed?parsed.value+":"+parsed.dimension:'ничего');
}
alert(a.join('\n'));

Раед 24.04.2012 20:07

melky,
Ну в FF вроде нормально работает

melky 24.04.2012 20:09

Цитата:

Сообщение от Раед (Сообщение 171048)
melky,
Ну в FF вроде нормально работает

интересует в первую очередь IE :)

Раед 24.04.2012 20:11

Цитата:

Сообщение от melky
интересует в первую очередь IE

Зашёл через ИЕ7, так он вообще при нажатии на Посмотреть пишет, что необходимый функционал не поддерживается вашим браузером

melky 24.04.2012 20:24

Цитата:

Сообщение от Раед (Сообщение 171050)
Зашёл через ИЕ7, так он вообще при нажатии на Посмотреть пишет, что необходимый функционал не поддерживается вашим браузером

я забыл про array.map в примере. сейчас поправлю.


Часовой пояс GMT +3, время: 19:45.