2017-04-20 29 views
0

我想弄清楚如何把選項值放在一個帶正則表達式的lookaround中。在正則表達式周圍的optionals

這些值應符合

3 
1000 
15-20 
2048-4096/100 

此值應

3/4 

我想在正則表達式「的說法只是如果有一個破折號4位數編號和一個冒號前的匹配/除號

例如:

  1. -9999/除號前應該匹配
  2. 9999/不應該匹配,因爲沒有 -
  3. -/應該不匹配,因爲沒有數

    ^[^0][0-9]*(-|:)?([0-9]*)?(?<=[0-9])(\/)?([0-9]*)$

我看看周圍只是尋找一個前面的號碼,但如果我把?*它不再有效。謝謝您的幫助!!! (?:...)

+1

您能澄清一下預期的規則應該做什麼嗎?我不確定我是否瞭解您提供的有效號碼列表中的模式。 – noahnu

+0

dash ='-',正斜槓='/',這是哪一個? –

+0

'(\ d {4} - \ d {4}/\ d +)' –

回答

2
^\d+(?:[-:](?:\d{4}\/\d+|\d+))?$ 

如果我理解你想要正確的東西,

  • \ d +與一些數字
  • 啓動?其後跟以短劃線或冒號開頭的可選模式
  • \ d {4}/\ d +可選組中的數字可以是帶有斜槓的4位數字,也可以是其他數字
  • \ d +或者可選組如果它不是以斜槓開始,則爲任何數字。
+0

偉大的作品:https://regex101.com/r/ 1xRdhO/1 –

+0

儘管我無法理解這種模式:'[ - :]'':''的目的是什麼:'? –

+0

現在這是無關緊要的權利? –

相關問題