Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с регулярным выражением (https://javascript.ru/forum/misc/75836-pomogite-s-regulyarnym-vyrazheniem.html)

MC-XOBAHCK 11.11.2018 00:03

Помогите с регулярным выражением
 
Нужно удалить всё что находится между закрывающими тегами </tbody></table>

Я саму регулярку не могу написать, нужно что то типа:
.replace(/\<\/tbody\>----тут_всё_удаляем----\<\/table\>/, '</tbody></table>');

Помогите пожалуйста.

рони 11.11.2018 00:07

MC-XOBAHCK,
alert("</tbody>12335\n\n</table>".replace(/<\/tbody>[\s\S]*?<\/table>/mig, '</tbody></table>'));

MC-XOBAHCK 11.11.2018 00:15

рони, Спасибо!

MC-XOBAHCK 06.12.2018 00:50

Помогите с регуляркой. Получаю урл страницы, нужно вытащить из неё домен.
Варианты урла могут быть как https так и http.

Белый шум 06.12.2018 01:05

var url = prompt(\'Введите URL\', \'https://javascript.ru/forum/misc/75836-pomogite-s-regulyarnym-vyrazheniem.html\');

if( !url ) { alert(url); throw new Error(); }
domain = url.match(/^https?:\/\/([^/]+)/);

if( !domain ) { alert(domain); throw new Error(); }
console.log(domain);

alert( domain[1] );

j0hnik 06.12.2018 01:22

нельзя ли сразу взять нужное?
alert(document.location.host)

j0hnik 06.12.2018 01:32

https://developer.mozilla.org/ru/docs/Web/API/URL

var url = 'https://javascript.ru/forum/showthread.php?p=499847&posted=1#post499847';
console.log(new URL(url).hostname);

MC-XOBAHCK 06.12.2018 01:34

Белый шум,
Спасибо! Работает. Правда я не понимаю почему получается массив, но это из за незнания регулярок.

j0hnik,
в моём случае нельзя. У меня в данном случае расширение для гугл-хрома, оно как фоновая страница отрабатывает. Из API могу вытянуть только полный урл, поэтому нужна регулярка чтоб домен вытащить.

MC-XOBAHCK 06.12.2018 01:40

Кстати, не подскажите, эта страница в учебнике:
https://learn.javascript.ru/regexp-lookahead
это планируется тренажёр на русском для регулярок? или я неправильно понял?

На английском находил несколько тренажёров, но не разобрался в них.

Artur_Hopf 06.12.2018 16:46

Вот тут тренируйся
https://regexr.com/
Регулярки это гадость, лучше без них как нибудь.

laimas 06.12.2018 17:07

Цитата:

Сообщение от Artur_Hopf
лучше без них как нибудь

Их не стоит применять в том случае, если можно обойтись иным решением, но "как нибудь" не решит многие задачи без regexp.

MC-XOBAHCK 06.12.2018 19:24

Помогите с регуляркой.
Получаю урл страницы, нужно вытащить из неё протокол http или https.

рони 06.12.2018 19:32

Цитата:

Сообщение от MC-XOBAHCK
протокол http или https.

пост №5

MC-XOBAHCK 06.12.2018 19:39

Цитата:

Сообщение от рони (Сообщение 499911)
пост №5

В том решении я получаю массив из двух значений: домен с протоколом и просто домен
[https://javascript.ru, javascript.ru]

А мне бы теперь получить http или https.

Или это делать не через регулярку, а делать проверку на первые пять символов из урла?

MC-XOBAHCK 06.12.2018 19:54

Вот такое решение для определения протокола нормально будет?
let protocol;
let url = 'https://javascript.ru/forum';

url.charAt(4) === 's' ? protocol = 'https' : protocol = 'http';

рони 06.12.2018 20:02

MC-XOBAHCK,
var url = prompt(\'Введите URL\', \'https://javascript.ru/forum/misc/75836-pomogite-s-regulyarnym-vyrazheniem.html\');

if( !url ) { alert(url); throw new Error(); }
domain = url.match(/(^https?):\/\/([^/]+)/);

if( !domain ) { alert(domain); throw new Error(); }
console.log(domain);

alert( domain );

MC-XOBAHCK 06.12.2018 20:30

рони,
Круто! Работает. Спасибо за помощь!

Я 10 минут не мог найти отличие от той регулярки. Потом только увидел что добавились круглые скобки.

Извините за нескромность, а можно ещё в этот массив добавить ещё один элемент который будет путь?
То есть получить из урла и эту часть:
javascript.ru/forum/misc/75836-pomogite-s-regulyarnym-vyrazheniem.html

рони 06.12.2018 20:34

MC-XOBAHCK,
domain = url.match(/(^https?):\/\/(([^/]+).*)/);

Aetae 06.12.2018 20:59

var url = new URL('https://javascript.ru/forum');
alert(url.protocol);
alert(url.pathname);
в старых браузерах можно просто:
var url = document.createElement('a');
url.href = 'https://javascript.ru/forum';
alert(url.protocol);
alert(url.pathname);

Alexandroppolus 06.12.2018 21:27

по поводу домена и регулярки - между // и ближайшим / могут кроме домена ещё затесаться логин, пароль и порт )
более того, / в конце может не быть, а будет # или ?

MC-XOBAHCK 06.12.2018 21:43

Alexandroppolus,
В данном случае регулярки используются в расширении для гугл-хром. API предоставляет адрес страницы, поэтому под задачи расширения приходится через регулярки вытаскивать разные значения.

j0hnik 06.12.2018 23:47

Цитата:

Сообщение от Alexandroppolus (Сообщение 499925)
по поводу домена и регулярки - между // и ближайшим / могут кроме домена ещё затесаться логин, пароль и порт )
более того, / в конце может не быть, а будет # или ?

а еще и поддомен.

MC-XOBAHCK
можно глянуть что это за динозавр?

MC-XOBAHCK 07.12.2018 05:19

Цитата:

Сообщение от j0hnik
можно глянуть что это за динозавр?

Да какой там динозавр, даже на скорлупку от яичка динозавра не тянет.


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