0

最初の正規表現と、渡された引数ループifをチェックする条件を書きました。def正しく動作していないようです。正規表現に問題があると思います。条件は実行されますが、必要なパターンと一致する場合でも値が正規表現と一致しない、またはその逆であると表示されます。

私が必要とするパターンは次のようなものです123456_12345_ABC_123::

6 digits 
underscore
5 digits (may include 0 padding)
underscore
3 upper case letters
underscore
3 digits (may include 0 padding)

これが私のコードです:

if ev_val.match(/[0-9]{6}(_)[0-9]{5}(_)[a-z]{3}(_)[0-9]{3}/)

    puts "#{ev_val} matches required batch naming convention"
else
    puts "#{ev_val} doesn't match required batch naming convention\nSTOPPING SCRIPT!!!"
    exit
end

誰かが何か考えを持っているなら、私はそれを大いに感謝します!

4

1 に答える 1

2

それ以外の:

/[0-9]{6}(_)[0-9]{5}(_)[a-z]{3}(_)[0-9]{3}/

以下を使用できます。

/\d{6}_\d{5}_[A-Z]{3}_\d{3}/
  • \dは数字 AKA[0-9]なので、その省略形の使用に慣れる必要があります。
  • (_)コード内で何も実行しないため、アンダースコアをキャプチャせずに、単に_.
  • [a-z]すべての小文字をキャプチャします。大文字が必要なので、を使用します[A-Z]
于 2013-10-24T22:05:36.810 に答える