4

我有一个名称列表,我希望过滤列表以仅返回包含姓氏和名字的名称。

假设我正在寻找“Joe Doe”

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

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

4

1 回答 1

7

这个基于前瞻的正则表达式应该可以工作:

/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/i

测试:

/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Joe Doe'); // true
/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Doe Joe'); // true
于 2013-10-16T19:52:57.763 回答