Неправильно пониаешь. 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, время: 17:47. |