最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Regex - match multiple unordered words in a string - Stack Overflow

programmeradmin4浏览0评论

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"

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"

Share Improve this question asked Oct 16, 2013 at 19:47 NewtonNewton 2451 gold badge5 silver badges11 bronze badges 2
  • is your first name and last name always separated by whitespace? – Rohit Jain Commented Oct 16, 2013 at 19:49
  • Not always, there are cases where I have hyphenated names – Newton Commented Oct 16, 2013 at 19:51
Add a ment  | 

1 Answer 1

Reset to default 8

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
发布评论

评论列表(0)

  1. 暂无评论