JSFiddle - React, Tailwind, and code Playground

by joplomacedo

JavaScript

function removeExtraSpacesAndLineBreaks(text) {
	return text.replace(/\n/g, ' ').replace(/\s\s+/g, ' ').trim();
}


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 if ( part === '{{ticker}}') {
            result += `{{ticker-\\D*}}`
        } else {
            result += `\\s+${part}\\s+`;
        }


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

        return result;

    }, '');

    return new RegExp(regexStr, 'igm')
}

const regex = createRegex('This is a * bitch')



const text = 'This is a motherfucking bitch';


console.log(text.match(regex))