Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to search exact or closest word in array, using javaScript RegEx?

In my app I have implemented local search using Regular expressions, I have problem, I could not find solution even after much searching, as you can see I have words array, Which I filter based on condition, I want to implement something like that:

if user writes ele into the search box, I want to get ['electric', 'elektric'], same should happen if user writes ric into the input field result: ['electric', 'elektric'], but In case the user enters the exact name, for example electric result should be : ['electric']
At last, if input will be cooling result should be ['engine cooling']

As you can see, My goal is to system search exact word or exact letters or the closest logical option. I will take any advice, thanx

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

let words = ['electric', 'elektric', 'engine cooling']

function bestMatch(event){
 let match = words.filter((e) => new  RegExp(`^${event.value}`,"ig").test(e));
 console.log(match)
}
<input type="text" placeholder="best match" onchange="bestMatch(this)" />

>Solution :

Add .* before and after to get the regex to work so that position in word doesn’t matter, though regex is unneccesary based on your requirements. Instead you can use includes. Finally onkeyup might be better/faster in getting results

With regex:

let words = ['electric', 'elektric', 'engine cooling']

function bestMatch(event){
 let match = words.filter((e) => new  RegExp(`^.*${event.value}.*`,"ig").test(e));
 console.log(match)
}
<input type="text" placeholder="best match" onchange="bestMatch(this)" />

Without regex (and using onkeyup):

let words = ['electric', 'elektric', 'engine cooling']

function bestMatch(event){
 let match = words.filter((e) => e.includes(event.value.toLowerCase()))
 console.log(match)
}
<input type="text" placeholder="best match" onkeyup="bestMatch(this)" />
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading