2016-12-27 4 views
1

私は、ExcelのセルID(例:A1またはAB32)を挿入する必要があるPHPアプリケーションで作業しています。この値は後で使用するためにデータベースに保存されています。正規表現を使用してセルID形式を検証しようとしていますが、動作していないように見えますが、これはこれまでのところあります。Excelセルを検証する正規表現

^[a-zA-Z]\d$ 
+0

倍数が可能な場合は、数量子が必要です。 '[a-zA-Z] + 'は' AB'または 'A'や' aBc'などを許可します。 '\ d +'は '1'、' 32'、 '333'などを許可します。 regex101を使用してhttps://regex101.com/r/8OQVBs/1を更新し、https://regex101.com/r/8OQVBs/2を更新してください。 – chris85

+0

'^ [a-zA-Z] + \ d + $' "^ [a-zA-Z] + \ d + \ z" –

+1

ところで、私はチェックしました:私のExcelでは、最大1048576行と 'XFD'列があります。これは正規表現では簡単ではないかもしれません。 –

答えて

0

この^[a-zA-Z]{1,4}(\d+)$

  • ^([-ZA-Z] +)を試してください:1〜4文字
  • (\ D +)$を開始する:一桁又は
  • 以上で終わります
+1

数字部分が** 1048577 **未満であることをどのように検証しますか? –

+1

文字部分が** 4 **文字未満であることをどのように検証しますか? –

+0

私は最大4文字を確認するために私の答えを更新しました。 しかし、正規表現が文字列であることがわかっている限り、値を評価することはできず、制約は式として「簡単に」実装できる特定のパターンにつながりません。 最大限1048577を多くの条件(1または何もない)、(0〜9または注意)に分割しようとすることはできますが、この方法では正確に正しい制限を取得できません。 –

1

@BartKiersによってこの質問には最高のanswerがあります。ここでは、xの範囲をyと一致させる必要があるこれらのタイプの正規表現を作成する関数を作成します。彼の論理はテキスト範囲にうまく移行し、regex101.comのtested in PCRE dialectです。

正規表現:

^(?:[A-Z]|[A-Z][A-Z]|[A-X][A-F][A-D])(?:[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|10[0-3][0-9][0-9][0-9][0-9]|104[0-7][0-9][0-9][0-9]|1048[0-4][0-9][0-9]|10485[0-6][0-9]|104857[0-6])$

基本的にこう述べています。

  • 列の一部:A-FA-Z、またはA-ZA-Z、またはA-X

  • 行の一部A-Dで:

  • と、または 0-91-90-9、または 1-91-9など 104857の最大までずっと

それは次のように一致します。

A1 
AA11 
AAA111 
ZZ12 
YY1048575 
XFD1048576 

それは次のように一致しません。

A0 
AA01 
AAZ1111111 
XFD1048577 
XFE1048576 
ZZZ333 
ZZZ9999999 

図は次のとおりです。

enter image description here