Неправильно пониаешь. RTFM
. - любой символ. + - повторить 1 и более раз. ? после множителя - обозначение "не жадности", те /a.+d/ съест в 'abcdabcd' всё, а /a.+?d/ только 'abcdabcd'. |
Aetae, еще раз спасибо! :)
|
Получается это невозможно сделать для моего случая?
|
Возможно все, а это - раз плюнуть.
Но никто не сделает это за вас, учитесь. |
Цитата:
от самого первого JOOM, до нужного элемента... |
Цитата:
Цитата:
alert('JOOMtest3*test4JOOMtest5*test6JOOM'.replace(/JOOMtest3(.*)test6JOOM/, '$1')); |
monolithed,
"это была шутка" Я даже не понимаю о какой спецификации ты? А что ты за код привёл? |
Цитата:
Цитата:
var s = 'abcdabcd'; alert([ s.replace(/a.+d/, 'x'), s.replace(/a.+?d/, 'x') ]); |
monolithed, жаль что не даёт тебе плюсануть... :( Но спасибо за пример т.с. "на словах" :)
Про "жадность" вроде как тоже понял... :D |
Что не хватает в этом рег. выражении, всё уже перепробовал что в голове нашёл, то удаляет всё до сейчас он удаляет всё до "test3JOOM", то вообще всё удаляет, то ничего не удаляет, вот выбрал один из рег. выражений в котором удаляется всё до "test3JOOM", не как не пойму что добавить к нему(
var text = "test3"; var beg = "JOOM"; var end = text+"JOOM"; var end2 = "JOOM"; var str = "JOOMtest1*test2JOOMtest4*test3JOOMtest5*test6JOOM"; var test=new RegExp(beg+'.+?.+?'+end, "g"); alert(str.replace(test,end2)) |
Цитата:
а с подобными форматами лучше поступать по-другому: 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() ); |
Цитата:
Цитата:
|
оно работает правильно, но ты не понимаешь, как оно работает. Разберись, дальше можно будет о чем-то говорить. А ты как думал, тебе тут готовый результат выдадут, а тебе делать ничего не надо будет?
|
Я понимаю почему удаляет всё, я не знаю что добавить чтобы это предотвратить и поэтому думал что невозможно, но Aetae сказал что это возможно.
|
хорошо, почему удаляет все?
|
Ну потому что у меня первое слово в строке JOOM, а выражение моё читает так:
начинай с JOOM и до test3JOOM удаляй всё. А JOOM у меня в самом начале и поэтому от него и удаляет всё до test3JOOM |
Цитата:
|
Цитата:
|
ну и? '.' обозначает любой символ. Как в регулярных выражениях указать "диапазон символов"?
|
[a-z], [0-9], но ведь и до нужного JOOM эти символы, так не получиться ограничить.
|
ну как это не получиться?
alert('JOOMtest1*test2JOOMtest4*test3JOOMtest5*test6JOOM'.replace(/JOOM[a-z0-9_]+\*test3JOOM/, 'JOOM')); |
x-yuri,
Спасибо большое, так после самого первого JOOM тоже есть символы a-z,0-9,"_", поэтому и думал что не получится. |
Часовой пояс GMT +3, время: 15:40. |