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

时间:2013-10-16 19:47:34

标签: javascript regex

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

假设我在寻找“Joe Doe”

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

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

1 个答案:

答案 0 :(得分:7)

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

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

<强>测试

/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Joe Doe'); // true
/(?=.*?\bJoe\b)(?=.*?\bDoe\b).*/.test('Doe Joe'); // true