I have a list of names and I am looking to filter the list to only return names that contains both the last and first names.
Let's say I am looking for "Joe Doe"
I have the current regex (?:^|\s)Joe|(?:^|\s)Doe
It somewhat works but it is returning all the strings that contains either Joe or Doe. I would like it to match the names that contains both names only, and it could be either "Doe Joe" or "Joe Doe"
This lookahead based regex should work:
/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/i
Testing:
/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Joe Doe'); // true
/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Doe Joe'); // true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With