2014-02-28 71 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))$ –

相關問題