-2

次の形式の文字列を検証する Ruby 正規表現を探しています"A1:B2"。コロンの左側の文字は - の間AFあり、コロンの右側は - の間にありAZアルファベット順で左側の文字より前ではありません。

有効な例は"A1:B2"、、、、"A3:B4"です。"A5:B6""C2:D3"

いくつかの無効な例は"E1:A2""B4:A3"です。

つまり、 6つAの列Fと n 行のExcel テーブルを考えてみます。A1:B2A1A2B1B2

上記のシナリオに一致する正規表現が見つかったらお知らせください。

4

2 に答える 2

2

これは正規表現だけではできないと確信しています。おそらく のようなものを使用して/^([A-F])(\d):([A-Z])(\d)$/、$1 と $3、$2 と $4 を比較する必要があります。

例:

def validate(str)
    /^([A-F])(\d):([A-Z])(\d)$/.match(str) && $1 < $3 && $2 < $4 
end

(コロンの両側に 1 つの文字と 1 つの数字のみを許可すると仮定します。)

于 2012-09-11T15:16:15.890 に答える
1

単一の正規表現でこれを行うことはできません。ただし、次のように sth で実行できます

def validate(str)
  a,b = str.split(":")
  !(/([A-F])\d/ =~ a).nil? && !(/[#{$1}-Z]\d/ =~ b).nil?
end

説明:

最初の文字は $1 に入れられ、次に 2 番目の正規表現に挿入されます。このようにして、最初の部分にあった文字から常に一致します。

例:

1.9.2p290 :039 > validate("A1:B2")
 => true 
1.9.2p290 :040 > validate("B2:A1")
 => false 
于 2012-09-11T15:23:52.293 に答える