2012-12-14 82 views
1

我需要一個正則表達式來檢查某個輸入的每個單詞是否以相同的字母開頭(並且還允許某些標點符號)。正則表達式「每個字都有相同的字母」

目前,我有以下幾點:

^(((\b[aA])\w*([\s\.\-\!\?\"\':,])*)+)|(((\b[bB])\w*([\s\.\-\!\?\"\':,])*)+)$ 

從[AA]一路往上走,以[ZZ]

顯然,這不是去了解它的最好方式。 有沒有人有聰明的正則表達式?

謝謝。

+0

你真的想用正則表達式嗎?看起來有點像大炮的蚊子 - 我甚至不知道是否有可能做這樣的檢查,這取決於正在使用的語言 – Rubens

+1

爲什麼不只是捕獲所有的開始字母,並檢查你的應用程序,他們是否都是一樣的?似乎快速和可維護。 – Wrikken

+0

這是針對具有不同規則的故事的網站。爲了讓所有東西儘可能通用,我將規則作爲正則表達式存儲在數據庫中。但是你是對的,在代碼中更容易做到。 – jfc37

回答

2

使用反向引用不區分大小寫的匹配。

^\s*([a-z])[a-z]*(?:\s+\1[a-z]*)*\s*$ 
+2

你不是指''\ s *([a-z])[a-z] *((?:\ s + \ 1 [a-z] *)\ s *)* $' – NullUserException

+0

這不適用於只有一行? – Rubens

+0

@NullUserException - 糟糕,是的;好,很好。 's +'已經被覆蓋了。謝謝,編輯我的解決方案。 –

相關問題