我有一个名单列表,我希望过滤列表只返回包含姓氏和名字的名称.
假设我正在寻找"Joe Doe"
我有当前的正则表达式 (?:^|\s)Joe|(?:^|\s)Doe
它有点工作,但它返回包含Joe或Doe的所有字符串.我希望它匹配仅包含两个名称的名称,它可以是"Doe Joe"或"Joe Doe"
这个基于前瞻性的正则表达式应该可行:
/(?=.*?\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)