Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
14 lines
746 B
Plaintext
14 lines
746 B
Plaintext
export const wordBoundariesRegex = (input)=>{
|
|
const words = input.split(' ');
|
|
// Regex word boundaries that work for cyrillic characters - https://stackoverflow.com/a/47062016/1717697
|
|
const wordBoundaryBefore = '(?:(?:[^\\p{L}\\p{N}])|^)' // Converted to a non-matching group instead of positive lookbehind for Safari
|
|
;
|
|
const wordBoundaryAfter = '(?=[^\\p{L}\\p{N}]|$)';
|
|
const regex = words.reduce((pattern, word, i)=>{
|
|
const escapedWord = word.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
return `${pattern}(?=.*${wordBoundaryBefore}.*${escapedWord}.*${wordBoundaryAfter})${i + 1 === words.length ? '.+' : ''}`;
|
|
}, '');
|
|
return new RegExp(regex, 'i');
|
|
};
|
|
|
|
//# sourceMappingURL=wordBoundariesRegex.js.map |