Поиск в тексте конструкции слово1|слово2|слово3 через regExp

335
24 ноября 2016, 09:55

Как встроить regExp в js для того, чтобы найти в тексте конструкцию слово1|слово2|слово3 и вернуть массив [слово1, слово2, слово3]? Насколько смог разобраться регулярное выражение должно выглядить как: (\b\w+[|]\w+\B)

Answer 1

Если всегда три слова, то можно воспользоваться следующим регулярным выражением: /(\w+)\|(\w+)\|(\w+)/

var regexp = /(\w+)\|(\w+)\|(\w+)/;
var getResult = function (str, regexp) {
    var result = str.match(regexp);
    return result ? result[0].split('|') : [];
};
getResult('some text foo|bar|baz some text', regexp); // ["foo", "bar", "baz"]
getResult('foo|bar|baz', regexp) // ["foo", "bar", "baz"]
getResult('some text', regexp) // []

Если количество слов неизвестно, то можно воспользоваться более общим рег. выражением (\w+\|)+(\w+).

И да, как написал @hindmost, если слова заданы заранее (например нужно определить, есть ли они в тексте), то можно воспользоваться методом String.prototype.indexOf().

READ ALSO
Добавление/Удаления класса active

Добавление/Удаления класса active

Всем привет! Добивался 30 минут попытки удаления и добавления класса active для ссылок. Вроде код правильный, но у меня не переходит на другие...

398
Как в jQuery получить свойство padding без px?

Как в jQuery получить свойство padding без px?

Получаю свойство padding-left так.

461
Как сделать чтобы загрузка файлов не отправлялась сразу на сервер?

Как сделать чтобы загрузка файлов не отправлялась сразу на сервер?

После добавления файлов, они сразу грузятся на сервер. Как исправить.

464