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))