私は、ExcelのセルID(例:A1
またはAB32
)を挿入する必要があるPHPアプリケーションで作業しています。この値は後で使用するためにデータベースに保存されています。正規表現を使用してセルID形式を検証しようとしていますが、動作していないように見えますが、これはこれまでのところあります。Excelセルを検証する正規表現
^[a-zA-Z]\d$
私は、ExcelのセルID(例:A1
またはAB32
)を挿入する必要があるPHPアプリケーションで作業しています。この値は後で使用するためにデータベースに保存されています。正規表現を使用してセルID形式を検証しようとしていますが、動作していないように見えますが、これはこれまでのところあります。Excelセルを検証する正規表現
^[a-zA-Z]\d$
この^[a-zA-Z]{1,4}(\d+)$
数字部分が** 1048577 **未満であることをどのように検証しますか? –
文字部分が** 4 **文字未満であることをどのように検証しますか? –
私は最大4文字を確認するために私の答えを更新しました。 しかし、正規表現が文字列であることがわかっている限り、値を評価することはできず、制約は式として「簡単に」実装できる特定のパターンにつながりません。 最大限1048577を多くの条件(1または何もない)、(0〜9または注意)に分割しようとすることはできますが、この方法では正確に正しい制限を取得できません。 –
@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-F
とA-Z
、またはA-Z
とA-Z
、またはA-X
行の一部A-D
で:
0-9
と
1-9
と
0-9
、または
1-9
と
1-9
など
104857
の最大までずっと
それは次のように一致します。
A1
AA11
AAA111
ZZ12
YY1048575
XFD1048576
それは次のように一致しません。
A0
AA01
AAZ1111111
XFD1048577
XFE1048576
ZZZ333
ZZZ9999999
図は次のとおりです。
倍数が可能な場合は、数量子が必要です。 '[a-zA-Z] + 'は' AB'または 'A'や' aBc'などを許可します。 '\ d +'は '1'、' 32'、 '333'などを許可します。 regex101を使用してhttps://regex101.com/r/8OQVBs/1を更新し、https://regex101.com/r/8OQVBs/2を更新してください。 – chris85
'^ [a-zA-Z] + \ d + $' "^ [a-zA-Z] + \ d + \ z" –
ところで、私はチェックしました:私のExcelでは、最大1048576行と 'XFD'列があります。これは正規表現では簡単ではないかもしれません。 –