Написать регулярку для поиска всех слов, где перемешаны буквы?
Как составить регулярку, которая ищет все вхождения слова, при этом буквы могут быть перемешаны
Например: xyz yzx zxy - начальные данные
Регулярное выражение, например, ищет xyz, и все его перестановки
То есть на выходе получаем массив со всем такими строками
dodo512, нет, просто нужно найти все перестановки слова, где могут быть и другие слова
Вот как ещё пример
aasg assg gsaa gggh
Мы ищем sgaa
Нам должно вывести aasg gsaa
WbICHA, как я понял там дается исходное слово и нужно искать в строке все слова аналогичной длины и буквенного состава. По поводу повторения букв в комментариях Vvmig давал пример для слова "sgaa" и в этом примере видно что "assg" не должен подходить по условию т.к. тут буква "a" всего одна и две "s". В найденных словах и в исходном слове повторы букв должны совпадать.
const str = "aasg assg gsaa gggh";
const word = "sgaa";
const c = [...word].reduce(function (a, e) {
a.hasOwnProperty(e) && (++a[e]) || (a[e] = 1);
return a;
}, {});
let pattern = "\\b";
for (const letter in c) {
pattern += `(?=(\\w*${letter}){${c[letter]}})`
}
pattern += `[${word}]{${word.length}}\\b`
const re = new RegExp(pattern, 'g')
console.log(str.match(re))
Да, она не очень подходит
Просто мне надо максимально в проге уменьшить код, а это можно сделать только с помощью регулярки, так как стандартные методы строки длинные:)