2016-11-21 16 views
0

正しい数字の範囲を3つの文字のそれぞれに関連付けようとしています。米国政府によって採用さ
担当者は彼らの年俸を決める賃金等級が割り当てられている次のように\w*[EWO]-\d{1,2}正しい正規表現を取得しようとしています

質問です: これは私がこれまで持っているものです。給与等級は、文字E、W、またはO(いずれも大文字)で始まるコードです。最初の文字の後にダッシュが1つ続いて、正確に1つまたは2つの数字が続きます。有効なE給与等級は1から9まで移行します。有効なW給与等級は1から5まで移行します。有効なO給与等級は1から10まで移行します。いくつかの有効な給与等級にはE-1、W-5、O- 、および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

ありがとうございました –

関連する問題