Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   регулярные выражения (https://javascript.ru/forum/events/23675-regulyarnye-vyrazheniya.html)

devote 02.12.2011 00:24

var is=1 
var string='Hello <span id="esui0" class="bold">a<span id="esui0" class="underline">mig</span>o</span>)<span class="inactive" id="anchor1"></span>some text<span class="some-class">and some text</span><span class="inactive" id="anchor0"></span>'; 

var enteredREN=new RegExp('(^.*anchor'+(is-1)+'[^>]*></span>)(.*)(<span.*anchor'+is+'.*$)','ig'); 
var enteredRENN=new RegExp('(^.*anchor'+is+'[^>]*></span>)(.*)(<span.*anchor'+(is-1)+'.*$)','ig'); 

if ( enteredREN.test( string ) ) {
var entered= string.replace(enteredREN,'$2'); 
} else {
var entered=string.replace(enteredRENN,'$2');
}

alert( entered );

Pavel M. 02.12.2011 11:09

Цитата:

Сообщение от syegorius
задача - нужно получить содержимое которое находится между span#anchor0 и span#anchor1, причем span#anchor1 может быть как после span#anchor0 так и перед, плюс между ними может быть не только текст но и теги.

так пойдет ?

var string='Hello  <span id="esui0" class="bold">a<span id="esui0"  class="underline">mig</span>o</span>)<span  class="inactive" id="anchor1"></span>some text<span  class="some-class">and some text</span><span  class="inactive" id="anchor0"></span>';

var re = /<span[^>]+id="anchor(0|1)"><\/span>([\s\S]+)<span[^>]+id="anchor(0|1)"><\/span>/;

var res = re.exec(string);

if (res) {
    alert(res[2]);
}

syegorius 02.12.2011 16:38

Цитата:

Сообщение от Pavel M. (Сообщение 140321)
так пойдет ?

var string='Hello  <span id="esui0" class="bold">a<span id="esui0"  class="underline">mig</span>o</span>)<span  class="inactive" id="anchor1"></span>some text<span  class="some-class">and some text</span><span  class="inactive" id="anchor0"></span>';

var re = /<span[^>]+id="anchor(0|1)"><\/span>([\s\S]+)<span[^>]+id="anchor(0|1)"><\/span>/;

var res = re.exec(string);

if (res) {
    alert(res[2]);
}

ну этот пример подойдет, но не для всех случаев, тем не менее он меня вдохновил немного по другому переписать шаблон

спасибо!

trikadin 02.12.2011 16:43

syegorius, вообще, если у вас эта строка изначально в dom-дереве находится, то погуглите в сторону range/textrange.

syegorius 02.12.2011 21:10

ну я вообще то этим и занимаюсь, пишу небольшой texteditor.

два спана про которые идет речь выше проверяют, что ввел пользователь, я пытаюсь сделать так что бы в случае копи/паста из других документов вставлялся только чистый текст

еще что меня беспокоит - это будет ли успевать браузер обрабатывать столько операций за время между нажатием двух клавиш в случае если пользователь быстро печатает?

trikadin 02.12.2011 21:58

Цитата:

Сообщение от syegorius
еще что меня беспокоит - это будет ли успевать браузер обрабатывать столько операций за время между нажатием двух клавиш в случае если пользователь быстро печатает?

Нет. Лучше на каждое третье-четвёртое нажатие обрабатывать.


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