JSFiddle - React, Tailwind, and code Playground

by naryad

JavaScript

function anagramRegexGenerator(input) {
    var lookaheadPart = '';
    var matchingPart = '^';
    var positiveLookaheadPrefix='(?=';
    var positiveLookaheadSuffix=')';
    var inputCharacterFrequencyMap = {}
    for ( var i = 0; i< input.length; i++ )
    {
        if (!inputCharacterFrequencyMap[input[i]]) {
            inputCharacterFrequencyMap[input[i]] = 1
        } else {
            ++inputCharacterFrequencyMap[input[i]];
        }
    }
    for ( var j in inputCharacterFrequencyMap) {
        lookaheadPart += positiveLookaheadPrefix;
        for (var k = 0; k< inputCharacterFrequencyMap[j]; k++) {
            lookaheadPart += '.*';
            if (j == ' ') {
                lookaheadPart += '\\s';
            } else {
                lookaheadPart += j;
            }
            matchingPart += '.';
        }
        lookaheadPart += positiveLookaheadSuffix;
    }
    matchingPart += '$';
    return lookaheadPart + matchingPart;
}
document.write(anagramRegexGenerator('aacdaadc'))
document.write('<br/>')
document.write(anagramRegexGenerator('abcdef ghij'))
document.write('<br/>')
document.write(new RegExp(anagramRegexGenerator('abcdef ghij')).test('acdbefghij '))
document.write('<br/>')
document.write(new RegExp(anagramRegexGenerator('abcdef ghij')).test('acdbefghijj'))