2013-10-28 19 views
-1

我需要匹配郵政信箱或郵政總局信箱地址,基本的字符串規則是一個正則表達式:正則表達式PO BOX匹配

基本上我想要的規則是:

的第一個字符必須爲G或P,

如果第一個字符爲G,那麼下面的字符必須是字符,隨後PO BOX

其他的任何組合,如果第一個字符是P,則後續的字符必須是O盒

示例: PO BOX, GPO BOX。 G23123PO BOX, 都是好的,

但: GO BOX, G2323O BOX, 也不行\ n

所以我嘗試

^(([G | p](顯示。 )O(。)盒))* $

但在這種情況下,GO BOX也匹配,因爲第二p只optionaly,但我不能讓它要求,否則將破壞條件當第一個字母也是ap!

請幫忙!

+0

規則不明確,PO BOX是好的和壞的列表。 – anubhava

+0

以下小提琴滿足所有的例子,但不遵循你的矛盾規則:http://refiddle.com/gxq – Roganartu

回答

1

您的示例與您的描述不符。

這是怎麼回事?看起來g.+在開始時是可選的,但從P開始是一樣的。

^(g.+)?(p.+o.+box)$ 

的語法假定至少「擴展」的正則表達式語法,像sed -regrepPerl

您似乎在示例中使用了大寫字母,而在正則表達式中使用了小寫字母。最棘手的小正則表達式引擎是大小寫敏感的,所以你可能要

^(G.+)?(P.+O.+BOX)$ 

甚至

/^(g.+)?(p.+o.+box)$/i 

(至少在Perl)。

+0

非常感謝你的快速反應! – stephen