JSFiddle - React, Tailwind, and code Playground

by joplomacedo

JavaScript

const getQueryMatches = ( () => { //return function (text, query) {

    function createRegex( query ) {
        //query = removeExtraSpacesAndLineBreaks(query).trim();

        const regexStr = query.split(' ').reduce( (result, part, i, parts) => {

            if ( part === '**' ) {
                result += '.*';

            } else if ( part === '*' ) {
                result += '\\S{1,}';

            } else {
                result += `\\b${part}\\b`;
            }

            if ( i !== parts.length - 1 ) {
                result += '\\s{1,}';
            }

            return result;

        }, '');

        return new RegExp(regexStr, 'igm')
    }

    return function (text, query) {
        const regex = createRegex(query);
        return text.match(regex);
    }

})();


const result = getQueryMatches('bought calls', 'bought calls');
console.log(result)