22.12.2019, 11:54
|
Аспирант
|
|
Регистрация: 17.04.2017
Сообщений: 72
|
|
Помогите с регуляркой
Здравствуйте. Помогите с регулярукой для поиска. Допустим есть массив со строками: - Петров Василий Сергеевич
- Иванов Василий Петрович
- Краснов Сергей Петрович
Нужно что бы регулярка совпадала в случае, если есть совпадение в последовательности введенных букв в поиске. То есть если я введу ‘вас’ то получу: - Петров Василий Сергеевич
- Иванов Василий Петрович
Если я введу ‘ив’ то получу: Если ‘пет’, то получу все три результата.
То есть не важно какие символы идут до ключа и после ключа, главное, что в строке есть последовательность введенных букв
|
|
22.12.2019, 13:09
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от Tipylja
|
Помогите с регулярукой для поиска.
|
indexOf
Поиск подстроки
toLowerCase
Изменение регистра
|
|
22.12.2019, 13:27
|
Аспирант
|
|
Регистрация: 17.04.2017
Сообщений: 72
|
|
Я не стал вдаваться в детали, на деле это поиск через плагин для mongoose в mongoDB, туда нужно передать регулярку, так что нужна именно регулярка
|
|
22.12.2019, 13:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
|
|
22.12.2019, 15:22
|
Аспирант
|
|
Регистрация: 17.04.2017
Сообщений: 72
|
|
Благодарю за ответ, вроде это не совсем то, что нужно, возможно я чуть не так описал задачу - нужно забыть про массив=)) Мне просто нужно что бы регулярка проверяла есть ли в одной строке последовательность букв введенных в поиск. Я очень плох в регулярках, по этому и попросил помощи, если говорить абстрактно, на примере маски, то это должно выглядеть как-то так - **str** - то есть - не важно есть ли символы вначале, какие они и тд, не важно есть ли символы после строки, какие они и т.д. - главное что бы была последовательность букв str. Как-то так
RegExp(`/\D/${options.search.toString()\D}`
|
|
22.12.2019, 15:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Tipylja
|
вроде это не совсем то, что нужно
нужно что бы регулярка проверяла есть ли в одной строке последовательность букв введенных в поиск
|
Это
Сообщение от рони
|
indexOf
Поиск подстроки
|
как раз и нужно в таком случае.
|
|
22.12.2019, 15:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от Tipylja
|
Как-то так
RegExp(`/\D/${options.search.toString()\D}`
|
Сообщение от рони
|
строки 26, 34, 35.
|
|
|
22.12.2019, 15:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Tipylja,
const arr = [
"Петров Василий Сергеевич",
"Иванов Василий Петрович",
"Краснов Сергей Петрович"];
let search = "вас";
let arSearch = arr.filter(str => ~str.toLowerCase().indexOf(search.toLowerCase()));
console.log(search, arSearch)
|
|
|
|