2016-11-21 25 views
0

我被困在試圖使正確的數字範圍與三個字母中的每一個相關聯! 這是我到目前爲止有:\w*[EWO]-\d{1,2}試圖獲得正確的正則表達式

的問題如下:由美國政府採用
人員都分配了一個薪酬等級決定他們的年薪。薪酬等級是以字母E,W或O(每個都是大寫字母)開頭的代碼。第一個字母后跟一個短劃線,然後是一個或兩個數字。有效的工資等級從1上升到9,有效的工資等級從1上升到5.有效的O工資等級從1上升到10.有效的工資等級分類包括E-1,W-5,O-1 ,和O-10。無效薪酬等級分類的例子是E-10,W-6和O-20。

+0

試圖捕捉一次全部使用正則表達式是一個壞主意...分成3個不同的案件(E/W/O),然後分別檢查每一個,這也會使你的代碼更清晰,方式更簡單。 – alfasin

+0

但我該怎麼做? –

回答

0

如果該字母是O,則O-10有效。正則表達式:O-10

如果字母是O,O-1到O-9是有效的。正則表達式:O-[1-9]

如果字母是E,E-1到E-9是有效的。正則表達式:E-[1-9]

如果字母是W,W-1到W-5是有效的。正則表達式:W-[1-5]

把它們放在一起使用交替:O-10|O-[1-9]|E-[1-9]|W-[1-5]

唯一的技巧就是確保最長的比賽是第一次。您必須首先輸入O-10,否則O-10將與O-[1-9]匹配,並且它不匹配零。

最後,由於O-[1-9]E-[1-9]都是有效的,我們可以將它們組合起來,使:O-10|[EO]-[1-9]|W-[1-5]

+0

非常感謝您的幫助 –