変数に入っている文字列が
以下の条件を満たしているかを判定したいです。
rubyのバージョンは1.9.3になります。
①"0"か"1"か"2"か"3"か","のみで構成されている事
②数字は7桁を1セットとする事(0102030 等)
③最初及び最後の文字は数字である事
④","は連続しない事。(数字が連続して14桁、21桁..になるのはOK)
以下にOKの場合とNGの場合の例を挙げます.
※見易くするために改行していますが、
実際には改行は含まれません。
※------は区切り文字です。実際の文字列には含まれません。
・OKの場合
OKの場合
1------------------ 2(空白) 3 ※例外でOKとします。 4 あまり煩雑になるようでしたら別途判定をしますので 5 無視しても構いません。 6------------------ 70000100 8------------------ 91000201 100000000 11, 120000000 13------------------ 140033102 15, 160010020 17, 181002000 19------------------ 201000020 21, 220000000 230000000
・NGの場合
NGの場合
1------------------数字が7の倍数の桁数でない(10桁) 20000000 3, 40111011 5100 6, 70000100 8------------------数字が7の倍数の桁数でない(4桁と3桁) 91201 10, 11001 12------------------","が連続している 130000000 14, 15, 160030010 17------------------","から始まっている 18, 190020010 20------------------","で終わっている 210100200 22, 23------------------0123,以外の文字が使われている 240050000
この判定をする為に、以下の正規表現を作成してみたのですが、
数字の桁数が10桁などの場合にうまくいきません。
(他にも何か不具合があるかもしれません……)
if moji.match(/\A[0-3]{7}|,*[0-3]{7}\z/) == nil then
あまり重くなければ別に正規表現である必要もありません。
以上、何かいい手がありましたら教えて頂けると嬉しいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/06 04:08
2016/12/06 10:57