Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   регулярные выражения (https://javascript.ru/forum/css-html/70064-regulyarnye-vyrazheniya.html)

atanov 08.08.2017 10:46

регулярные выражения
 
Доброго времени суток,

не силён и совсем запутался в регулярных выражениях. Может у кого-то есть готовое решение?
Нужно из текста убрать все теги кроме следующего набора: <b></b><i></i><font></font><sub></sub><sup></sup>.
Кроме того в комбинациях тегов <script></script> и <style></style> убрать сами теги и всё, что находится между ними.

laimas 08.08.2017 10:49

А кто является источником текста?

atanov 08.08.2017 10:56

Текст из iframe

laimas 08.08.2017 10:59

Цитата:

Сообщение от atanov
Текст из iframe

Я не об этом. Текст формирует сервер, если из него постоянно нужно эти теги убирать, то почему один раз не сделать это сразу на сервере? Или это одноразовая задача?

ksa 08.08.2017 11:25

Цитата:

Сообщение от atanov
Кроме того в комбинациях тегов <script></script> и <style></style> убрать сами теги и всё, что находится между ними.

Как вариант...
var val='Кроме того в комбинациях тегов <script>if (a>b) b=a</script;'
val+='> и <style>div {color: red;}</style> убрать сами теги и всё, что находится между ними.';
var reg=/<(script|style)>.*?<\/(script|style)>/gi;
alert(val.replace(reg,''));

atanov 08.08.2017 11:30

Не совсем так. Иногда содержимое iframe нужно редактировать на клиенте.

ksa 08.08.2017 11:38

Цитата:

Сообщение от atanov
Нужно из текста убрать все теги кроме следующего набора: <b></b><i></i><font></font><sub></sub><sup></sup>.

Как вариант...

var val='Нужно из текста убрать все теги <p></p> кроме следующего набора: <b></b><i></i><font></font><sub></sub><sup></sup>.'
var reg=/<\/?(.*?)>/gi;
var arr=['b', 'i', 'font', 'sub', 'sup'];
alert(val.replace(reg,test));
function test(str, p1, p2, offset, s) {
	return (arr.indexOf(p1)==-1)? '': str;
};

atanov 08.08.2017 11:43

Цитата:

Сообщение от ksa (Сообщение 460940)
Как вариант...
var val='Кроме того в комбинациях тегов <script>if (a>b) b=a</script;'
val+='> и <style>div {color: red;}</style> убрать сами теги и всё, что находится между ними.';
var reg=/<(script|style)>.*?<\/(script|style)>/gi;
alert(val.replace(reg,''));

ksa

Просвятите пожалуйста, вертикальная черта между script и style что означает?

ksa 08.08.2017 11:46

Цитата:

Сообщение от atanov
вертикальная черта между script и style что означает?

Из документации
Цитата:

x|y
Находит x или y. Например, /green|red/ найдет 'green' в "green apple" и 'red' в "red apple."
https://javascript.ru/RegExp

Nexus 08.08.2017 11:48

Цитата:

Сообщение от atanov
Просвятите пожалуйста, вертикальная черта между script и style что означает?

Логическое «ИЛИ», кажется так правильно называется.


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