文字と数字の組み合わせを含む正規表現
概要
形式の正規表現を作成しようとしています:
TNP-XXXXX
文字 TNP と - のみが許可され、XXXXX は数字であり、最大 5 つの数字のみを受け入れることができます。
私がこれまでに持っているものは次のとおりです。
if !(/TNP-[\d]{5,}$/.match(tc_number))
raise "Is not in the correct format, It should be TNP-XXXXX"
end
解決策
正規表現には 2 つの問題があります。
また、[]も不要です。 [] は任意の文字クラスを構築するためのものです。 すでに [0-9] と同等の文字クラスであるため、文字クラス内に置く必要はありません。
代わりに、/^TNP-$/ で、TNP- で始まる 1 ~ 5 桁の文字列を示すようにします。
tests = ["ABC TNP-12345", "TNP-12345", "TNP-123", "TNP-", "TNP-ABC", "ABC-12345", "TNC-123456"]
tests.each do |test|
puts "#{test} - #{/^TNP-[\d]{1,5}$/.match?(test)}"
end
ABC TNP-12345 - false
TNP-12345 - true
TNP-123 - true
TNP- - false
TNP-ABC - false
ABC-12345 - false
TNC-123456 - false