Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите составить регулярное выражение (https://javascript.ru/forum/misc/14205-pomogite-sostavit-regulyarnoe-vyrazhenie.html)

x-yuri 11.01.2011 22:28

Цитата:

Сообщение от MCTrane
всё уже перепробовал что в голове нашёл

потому что если что-то не работает, надо пытаться понять, почему оно не работает. А не наугад перебирать варианты. Поставь себе regexbuddy и разберись, почему оно не работает

а с подобными форматами лучше поступать по-другому:
function QueryString( v ){
    if( v instanceof Array )
        this._assoc = v;
    else {
        this._assoc = {};
        var pairs = v.substr(1).split('&');
        for( var i=0; i<pairs.length; i++ ){
            var nameValue = pairs[i].split('=');
            this._assoc[ decodeURIComponent(nameValue[0]) ] = decodeURIComponent(nameValue[1]);
        }
    }
}

QueryString.prototype.val = function( n, v ){
    if( arguments.length > 1 )
        this._assoc[n] = v;
    return this._assoc[n];
};

QueryString.prototype.unset = function( n ){
    delete this._assoc[n];
};

QueryString.prototype.toAssoc = function(){
    return this._assoc;
};

QueryString.prototype.toString = function(){
    var r = [];
    for( var k in this._assoc )
        r.push( encodeURIComponent(k)+'='+encodeURIComponent(this._assoc[k]) );
    return '?'+r.join('&');
};

function assocToString( assoc ){
    var r = [];
    for( var k in assoc )
        r.push( "'"+k+"': '"+assoc[k]+"'" );
    return '{'+r.join(',')+'}';
}

var qs = new QueryString('?name1=value1&name2=value2');
alert( assocToString(qs.toAssoc()) );
qs.unset( 'name1' );
alert( assocToString(qs.toAssoc()) );
qs.val( 'name3', 'value3' );
alert( assocToString(qs.toAssoc()) );
qs.val( 'name3', 'value4' );
alert( assocToString(qs.toAssoc()) );
alert( qs.val('name2') );
alert( qs.toString() );

MCTrane 11.01.2011 23:06

Цитата:

Сообщение от Aetae (Сообщение 87269)
Возможно все, а это - раз плюнуть.
Но никто не сделает это за вас, учитесь.

Ну раз это так легко, напиши как, пожалуйста.
Цитата:

Сообщение от x-yuri (Сообщение 87504)
потому что если что-то не работает, надо пытаться понять, почему оно не работает. А не наугад перебирать варианты. Поставь себе regexbuddy и разберись, почему оно не работает

Так в том то и дело что работает, только не правильно.

x-yuri 12.01.2011 00:05

оно работает правильно, но ты не понимаешь, как оно работает. Разберись, дальше можно будет о чем-то говорить. А ты как думал, тебе тут готовый результат выдадут, а тебе делать ничего не надо будет?

MCTrane 12.01.2011 00:09

Я понимаю почему удаляет всё, я не знаю что добавить чтобы это предотвратить и поэтому думал что невозможно, но Aetae сказал что это возможно.

x-yuri 12.01.2011 00:21

хорошо, почему удаляет все?

MCTrane 12.01.2011 13:13

Ну потому что у меня первое слово в строке JOOM, а выражение моё читает так:
начинай с JOOM и до test3JOOM удаляй всё. А JOOM у меня в самом начале и поэтому от него и удаляет всё до test3JOOM

x-yuri 13.01.2011 06:03

Цитата:

Сообщение от MCTrane
удаляй всё

значит осталось ограничить твое "удаляй все" или ".*", например. Какие символы могут использоваться после JOOM и перед *?

MCTrane 13.01.2011 14:48

Цитата:

Сообщение от x-yuri (Сообщение 87767)
Какие символы могут использоваться после JOOM и перед *?

a-z,0-9 и ещё "_"

x-yuri 13.01.2011 15:17

ну и? '.' обозначает любой символ. Как в регулярных выражениях указать "диапазон символов"?

MCTrane 13.01.2011 17:31

[a-z], [0-9], но ведь и до нужного JOOM эти символы, так не получиться ограничить.


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