2014-02-28 180 views
0

我有一个包含两个单词的字符串,即firstname和lastname。他们可以在任何方式出现,例如:正则表达式匹配两个单词以及首字母缩写

Brad Pitt 
Brad P 
B Pitt 
P Brad 
Pitt B 
Pitt Brad 

它应该只包含上面的字符串(只有两个字)以及其他任何字符串应该被取消资格。可以用空格或逗号分隔字符串中的单词。有人可以帮助提供一个正则表达式来匹配上述情况吗?我试过/^(?=。\ bbrad | b | p | pitt \ b)(?=。 \ bbrad | p | b | pitt \ b)。* $/i但只验证单词并没有返回正确的匹配。

感谢您对此的帮助。

+0

*“符合上述情况”*?哪一个?什么是正确匹配?我看起来像一个mindreader? – m0skit0

+0

我指的是布拉德皮特出现的可能性。它可以以我提到的方式出现,但不会以任何其他方式出现。 – ArinCool

+0

如果您无法帮助或理解我的问题,您可能会问及我可以提供更多详细信息。有没有理由你应该downvote这个! – ArinCool

回答

0

只是尝试:

/^(Brad P(itt)?)|(B(rad)? Pitt)|(P(itt)? Brad)|(Pitt B(rad)?)$/i 

如果你能接受B PP B,你可以把它siplify到:

/^(B(rad)? P(itt)?)|(P(itt)? B(rad)?)$/i 
+0

我相信你可以在不改变结果的情况下从第一个正则表达式中移除两个'(rad)?'实例。 – Dukeling

+0

非常感谢!它解决了我的问题。 – ArinCool

0

它应该只包含上面的字符串(只有两个字)和任何 其他字符串应该被取消资格。 可以使用空格或 逗号分隔字符串中的单词。

^([A-z][A-z]+)[ ]+([A-z][A-z]+)$ 
+0

感谢您的回答弗拉基米尔。使用这个我不能验证[]表达式。我试图提供以下代码:((Brad)[] +(P(itt))?)|(B(rad)?Pitt)|(P(itt)?Brad)|(Pitt B(rad) ?)$/i 但它不起作用 – ArinCool

+0

^((Brad [] + Pitt)|(Pitt [] + Brad))$ –

相关问题