Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Исключения подстроки в регулярном выражение (https://javascript.ru/forum/misc/46855-isklyucheniya-podstroki-v-regulyarnom-vyrazhenie.html)

john1992on 26.04.2014 20:33

Исключения подстроки в регулярном выражение
 
Здравствуйте уважаемые!

есть например строка: "размораживание,холодильни к,морозильник,морозилка,бы тро,нов ый способ,раздел-идеи,раздел-техника,компакт-диск"

не могу понять, как из не достать массив строк через через match, которые подпадают под правило:
"([а-яА-Яa-zA-Z0-9 -]+)";
но исключить те, которые начинаются на "раздел-", ну и возможно ли это в принципе?

Sweet 26.04.2014 20:50

Цитата:

Сообщение от john1992on
как из не достать массив строк через через match, ... но исключить те, которые начинаются на "раздел-",


Sweet 26.04.2014 20:57

Проще и очевиднее сделать так:
var string = "размораживание,холодильник,морозильник,морозилка,быстро,новый способ,раздел-идеи,раздел-техника,компакт-диск";
var filtered = string.split(",").filter(function (x) {
  return x.indexOf("раздел-") != 0;
});
alert(filtered);

john1992on 26.04.2014 22:08

Спасибо огромное!

Но ради интереса, регуляркой такое сделать можно?

Aetae 26.04.2014 22:29

var string = "размораживание,холодильник,морозильник,морозилка,быстро,новый способ,раздел-идеи,раздел-техника,компакт-диск";
var filtered = string.split(/(?:,(?:раздел-[^,]*)?)+/);
alert(filtered.join('\n'));

Sweet 26.04.2014 22:54

Я всё таки думаю, что варианты с регулярками не подходят, потому что очень плохо читаются. Проще надо быть!:)
P.S. Вариация на тему от Aetae:
.split(/,(?:раздел-.*,)*/)

Vlasenko Fedor 26.04.2014 23:16

var string = "размораживание,холодильник,морозильник,морозилка,быстро,новый способ,раздел-идеи,раздел-техника,компакт-диск";
console.dir( string.replace(/раздел-.*?(\,|$)/g,"").split(","));

Aetae 26.04.2014 23:59

Цитата:

Сообщение от Sweet (Сообщение 309418)
P.S. Вариация на тему от Aetae:
.split(/,(?:раздел-.*,)*/)

Ну да, тупанул:), только:
.split(/,(?:раздел-.**!*?*/!*,)*/)
а то лишнего скушает.

Sweet 27.04.2014 00:02

Цитата:

Сообщение от Aetae
только:
string.split(/,(?:раздел-.*?,)*/)

Тоже тупанул:)

Vlasenko Fedor 27.04.2014 00:12

Цитата:

Сообщение от Aetae
Ну да, тупанул, только:
.split(/,(?:раздел-.*?,)*/)

раздел-техника, вначале ?


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