2016-11-08 35 views
1

我有一個輸入搜索字段,需要使用正則表達式編輯,這讓我很難過。該字段可以是1到6個字符。前三個字符(如果提供)必須是大寫字母,後三個字符必須是數字。所以我的模式是[A-Z]{3}[0-9]{3},這似乎是適用於所有6個字符。踢球者在任何時候都可以用星號結束字符串。所以「ABC123」很好。 「AB *」或「ABC1 *」也是如此。 「AB1 *」是一個錯誤。星號本身也是不允許的。如何構建一個REGEX模式來驗證輸入字段

我試過[A-Z*]{1-3}[0-9*]{0,3}但是允許「A **」和「AB1」。

我需要做什麼?

+1

'我需要用正則表達式編輯,我很糟糕' - > http://regexr.com是你的朋友 – Fusseldieb

回答

4

最直接的方法是描述所有可能的字符串,這些子模式的交替:

  • [A-Z]\*
  • [A-Z]{2}\*
  • [A-Z]{3}\*
  • [A-Z]{3}[0-9]\*
  • [A-Z]{3}[0-9]{2}\*
  • [A-Z]{3}[0-9]{3}

通過簡單的分解,你可以將其降低到這些子模式:

  • [A-Z]{1,3}\*
  • [A-Z]{3}[0-9]{1,2}\*
  • [A-Z]{3}[0-9]{3}

這給了我們這樣的最終結果:[A-Z]{1,3}\*|[A-Z]{3}[0-9]{1,2}\*|[A-Z]{3}[0-9]{3}

+0

哇。謝謝!我永遠不會把它們放在一起。 – OldGuy