Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с регуляркой (https://javascript.ru/forum/misc/79127-pomogite-s-regulyarkojj.html)

Tipylja 22.12.2019 11:54

Помогите с регуляркой
 
Здравствуйте. Помогите с регулярукой для поиска. Допустим есть массив со строками:
  • Петров Василий Сергеевич
  • Иванов Василий Петрович
  • Краснов Сергей Петрович
Нужно что бы регулярка совпадала в случае, если есть совпадение в последовательности введенных букв в поиске. То есть если я введу ‘вас’ то получу:
  • Петров Василий Сергеевич
  • Иванов Василий Петрович
Если я введу ‘ив’ то получу:
  • Иванов Василий Петрович
Если ‘пет’, то получу все три результата.
То есть не важно какие символы идут до ключа и после ключа, главное, что в строке есть последовательность введенных букв:)

рони 22.12.2019 13:09

Цитата:

Сообщение от Tipylja
Помогите с регулярукой для поиска.

indexOf
Поиск подстроки

toLowerCase
Изменение регистра

Tipylja 22.12.2019 13:27

Я не стал вдаваться в детали, на деле это поиск через плагин для mongoose в mongoDB, туда нужно передать регулярку, так что нужна именно регулярка

рони 22.12.2019 13:33

Tipylja,
строки 26, 34, 35.
https://javascript.ru/forum/517444-post11.html

Tipylja 22.12.2019 15:22

Благодарю за ответ, вроде это не совсем то, что нужно, возможно я чуть не так описал задачу - нужно забыть про массив=)) Мне просто нужно что бы регулярка проверяла есть ли в одной строке последовательность букв введенных в поиск. Я очень плох в регулярках, по этому и попросил помощи, если говорить абстрактно, на примере маски, то это должно выглядеть как-то так - **str** - то есть - не важно есть ли символы вначале, какие они и тд, не важно есть ли символы после строки, какие они и т.д. - главное что бы была последовательность букв str. Как-то так
RegExp(`/\D/${options.search.toString()\D}`

laimas 22.12.2019 15:36

Цитата:

Сообщение от Tipylja
вроде это не совсем то, что нужно
нужно что бы регулярка проверяла есть ли в одной строке последовательность букв введенных в поиск

Это
Цитата:

Сообщение от рони
indexOf
Поиск подстроки

как раз и нужно в таком случае.

рони 22.12.2019 15:38

Цитата:

Сообщение от Tipylja
Как-то так
RegExp(`/\D/${options.search.toString()\D}`

Цитата:

Сообщение от рони
строки 26, 34, 35.

:-?

рони 22.12.2019 15:42

Tipylja,
RegExp.escape = s => s.replace(/[[\\^$.|?*+()]/gim, "\\$&");
function createReg(str)
{
   return new RegExp(RegExp.escape(str), "gi");
}
alert(createReg("test"));

рони 22.12.2019 15:53

Tipylja,
const arr = [
"Петров Василий Сергеевич",
"Иванов Василий Петрович",
"Краснов Сергей Петрович"];
RegExp.escape = s => s.replace(/[[\\^$.|?*+()]/gim, "\\$&");
const createReg = search => new RegExp(RegExp.escape(search), "i");
let search = "вас";
let reg = createReg(search);
let arSearch = arr.filter(str => reg.test(str));
console.log(search, arSearch)

рони 22.12.2019 15:58

Tipylja,
const arr = [
"Петров Василий Сергеевич",
"Иванов Василий Петрович",
"Краснов Сергей Петрович"];

let search = "вас";
let arSearch = arr.filter(str => ~str.toLowerCase().indexOf(search.toLowerCase()));
console.log(search, arSearch)


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