var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr); // null
Я бы хотел, чтобы блок PRE был поднят, хотя он охватывает символы новой строки. Я думал, что флаг "m" делает это. Не делает.
Найден ответ здесь перед публикацией. SInce Я думал, что знаю JavaScript (читал три книги, работал часов), и в SO не было никакого решения, я все равно осмелюсь публиковать. бросать камни здесь
Итак, решение:
var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr); // <pre>...</pre> :)
Есть ли у кого-нибудь менее загадочный способ?
Изменить: this является дубликатом, но, поскольку его сложнее найти, чем у меня, я не удаляю.
Он предлагает [^]
как "многострочную точку". Я все еще не понимаю, почему [.\n]
не работает. Угадайте, что это одна из грустных частей JavaScript.