我正在開發一個php應用程序,用戶必須插入Excel的單元格ID(例如A1
或AB32
),該值存儲在數據庫中供以後使用,試圖使用正則表達式驗證單元格ID格式,但它似乎並沒有工作,這是我迄今爲止。用於驗證Excel單元格的正則表達式
^[a-zA-Z]\d$
我正在開發一個php應用程序,用戶必須插入Excel的單元格ID(例如A1
或AB32
),該值存儲在數據庫中供以後使用,試圖使用正則表達式驗證單元格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-Z
,或者A-Z
與A-Z
,或者A-X
與A-F
與A-D
行部分:1-9
,或1-9
與0-9
,或1-9
與1-9
與0-9
等一路的104857
最大與0-6
它匹配以下:
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' –
BTW,我已檢查:在我的Excel中,我有最大1048576行和'XFD'列。用正則表達式這可能不那麼容易。 –