2016-10-31 55 views
-3

我需要一個正則表達式的驗證3不同的情況:Especific正則表達式

  1. 99.99
  2. F99.9
  3. F/S99.9

的點可以被替代逗號

我有這樣的東西[F|F/S]?\d*[\,.]\d*但我不能使第三種情況下工作

任何幫助將不勝感激!

+0

'^(F(/ S)?)?99 \ .9 $'。下一個! –

回答

1

您可以使用可選的羣體,而不是一個字符類:

(?:F(?:/S)?)?\d*[,.]\d+ 
^^ ^^ ^^^^   

regex demo

如果您需要將整個字符串匹配,加錨左右,^$^(?:F(?:/S)?)?\d*[,.]\d+$

詳細

  • (?:F(?:/S)?)? - 可選F是任選隨後與/S
  • \d* - 0+數字(如果你希望至少1位,取代*+
  • [,.] - 逗號或點
  • \d+ - 1+數字。
+0

從已刪除的Aaron的答案摘錄:*第三種情況不起作用,因爲您沒有正確編寫第一個正則表達式片段:'[[...]'是一個字符類,它將匹配它包含的任何字符。你用後面的'?'量詞來表示它必須匹配0或1次,所以它不能匹配3個字符'F/S'。簡而言之:一個字符類與在類,並且應用於該類的量詞定義了將匹配多少個這樣的字符。你實際上需要一個*分組*構造而不是一個char類(如我上面已經提到的)。 –

+1

這就是我一直在尋找的東西,你是一個很好的Wiktor!非常感謝你! –