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)