Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   RegExp: точка == любому символу? (https://javascript.ru/forum/css-html/5241-regexp-tochka-%3D%3D-lyubomu-simvolu.html)

Arterk 29.09.2009 14:17

RegExp: точка == любому символу?
 
Вот код:
<div id="p1">
	<p>текст 1</p>
	<div class="s1">
		<hr>
		<p>текст 2</p>
	</div>
</div>
<script>
	txt = document.getElementById('p1').innerHTML;
	txt = txt.replace(/<div.*?<\/div>/igm, '');
	alert(txt);
</script>

Вместо ожидаемого:
<p>текст 1</p>

получаю:
<p>текст 1</p>
<div class="s1">
	<hr>
	<p>текст 2</p>
</div>


Где ошибка, разве точка не соответствует любому символу, включая \n?

Kolyaj 29.09.2009 14:27

Цитата:

Сообщение от Arterk
разве точка не соответствует любому символу, включая \n?

Нет.

txt = txt.replace(/<div[\s\S]*?<\/div>/ig, '');

ZoNT 29.09.2009 14:28

http://www.webmaster.ee/javascript/J.../RegExpJS.html

"(Десятичная точка) совпадает с любым одиночным символом, исключая символ новой строки. "

Arterk 29.09.2009 14:40

Kolyaj, ZoNT, спасибо!

e1f 29.09.2009 18:46

ZoNT, Kolyaj, а почему //gm не присоветовали? ;)

Kolyaj 29.09.2009 21:58

e1f,
Может потому что 1. уже был до нас, 2. не помогает? ;)

Riim 29.09.2009 22:07

[\s\S]

e1f 30.09.2009 14:30

(/^.+$/).test('asd\n') //false
(/^.+$/m).test('asd\n') //true
'a\nb'.replace(/./mg, '#') //перенос строки не заменяется

Спасибо, запомним :)

UPD Нашел "метод", как обойти это (кошмар!):
'a\nb'.replace(/\n/g,'\uffff').replace(/./g, '#')

Взято тут


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