正则表达式 - 匹配字符串中的多个无序单词

New*_*ton 4 javascript regex

我有一个名单列表,我希望过滤列表只返回包含姓氏和名字的名称.

假设我正在寻找"Joe Doe"

我有当前的正则表达式 (?:^|\s)Joe|(?:^|\s)Doe

它有点工作,但它返回包含Joe或Doe的所有字符串.我希望它匹配仅包含两个名称的名称,它可以是"Doe Joe"或"Joe Doe"

anu*_*ava 7

这个基于前瞻性的正则表达式应该可行:

/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/i
Run Code Online (Sandbox Code Playgroud)

测试:

/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Joe Doe'); // true
/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Doe Joe'); // true
Run Code Online (Sandbox Code Playgroud)