2013-05-14 39 views
1

在現場要允許一個點或三個點正則表達式匹配一個點或三點驗證

對於三點我正則表達式是這樣它的工作

/^[a-zA-Z]+[.]{3}$/ 

但我嘗試之一,三個都不起作用。我用|來嘗試(或)簽署提前

再次感謝它的工作,但我想允許下列選項中

方法1個0R 3點任何地方的字但不是2,4,5點

/^([a-zA-Z]+[.]{1})|([a-zA-Z]+[.]{3})$/ 

謝謝。

1) M.C.A 
2) M.C.A... 
3) M...CA. 

下面的正則表達式適用於上述要求

/^([a-zA-Z]+(\.|\.\.\.)([a-zA-z]+)?)+$/ 
+0

try \。對於一個點... – Janak 2013-05-14 10:07:50

+1

@janakshah不會改變任何東西,'[。]'只是一個*不錯的方式*(IMO)逃脫一個點。 – sp00m 2013-05-14 10:14:56

回答

1

你可以只簡化或聲明爲一組,例如

^[a-zA-Z]+(\.|\.\.\.)$ 

這將匹配任何數量與無論是....

結束字符
+0

再次感謝它的工作但我想允許下面的選項 意味着1 0或3點任何地方在字,但不是2,4,5點。 1)M.C.A 2)M.C.A ... 3)M ... CA。 – user2349035 2013-05-15 06:04:21

+0

你想達到什麼目的?可能有更簡單的方法來做你需要的。 – Kami 2013-05-15 09:53:07

1

您可以使用此

/^[a-zA-Z]+[.](?:[.]{2})?$/ 

手段,匹配一個點和可選兩個。

(?:[.]{2})?是一個非捕獲組(由於?:),因爲末尾的?是可選的。

0

交替的範圍是錯誤的(在啓動串錨隻影響第一交替,結束串錨只有第二):

/^([a-zA-Z]+[.]{1}) | ([a-zA-Z]+[.]{3})$/ 

更改括號,以確保兩個錨被綁定到兩個交替:

/^([a-zA-Z]+[.]{1}|[a-zA-Z]+[.]{3})$/ 

,或者甚至更好,沒有任何間隔:

/^[a-zA-Z]+\.(\.{2})?$/ 
0

您遺失|。你要匹配,與([a-zA-Z]+[.]{1})開頭的文本或結束與([a-zA-Z]+[.]{3})

正確的正則表達式是

/^[a-zA-Z]+([.]{3}|[.])$/ 
相關問題