Php 验证Excel单元格的正则表达式

Php 验证Excel单元格的正则表达式,php,regex,excel,expression,cell,Php,Regex,Excel,Expression,Cell,我正在开发一个php应用程序,其中用户必须插入Excel的单元格id(例如A1或AB32),该值存储在数据库中供以后使用,我试图使用正则表达式验证单元格id格式,但它似乎不起作用,这就是我目前得到的结果 ^[a-zA-Z]\d$ 试试这个^[a-zA-Z]{1,4}(\d+)$ ^([a-zA-Z]+):从1到4个字母开始 (\d+)$:以一个或多个数字结尾 在@BartKiers提出的这个问题中,他构建了一个函数来构造这些类型的正则表达式,这些正则表达式需要匹配x到y的范围。他的逻辑可以很

我正在开发一个php应用程序,其中用户必须插入Excel的单元格id(例如
A1
AB32
),该值存储在数据库中供以后使用,我试图使用正则表达式验证单元格id格式,但它似乎不起作用,这就是我目前得到的结果

^[a-zA-Z]\d$

试试这个
^[a-zA-Z]{1,4}(\d+)$

  • ^([a-zA-Z]+):从1到4个字母开始
  • (\d+)$:以一个或多个数字结尾
在@BartKiers提出的这个问题中,他构建了一个函数来构造这些类型的正则表达式,这些正则表达式需要匹配x到y的范围。他的逻辑可以很好地转换到文本范围,并且可以在regex101.com上找到

正则表达式:

[A-X][A-X][A-F][A-F][A-D][A-D[A-D]((以下简称::[1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9][0-9][0-9][0-9[1-9[1-9[1-1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9[1-9][0-9[0-9][0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9[0-9][0-9 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
    0-9
    等,一直到
    104857
    0-6

它与以下内容相匹配:

A1
AA11
AAA111
ZZ12
YY1048575
XFD1048576
A0
AA01
AAZ1111111
XFD1048577
XFE1048576
ZZZ333
ZZZ9999999
它将与以下内容不匹配:

A1
AA11
AAA111
ZZ12
YY1048575
XFD1048576
A0
AA01
AAZ1111111
XFD1048577
XFE1048576
ZZZ333
ZZZ9999999
图如下:


如果可以有倍数,则需要量词<代码>[a-zA-Z]+将允许
AB
,或
a
,或
aBc
,等等。
\d++/code>将允许
1
32
333
,等等。您可以使用regex101进行测试,并更新使用
^[a-zA-Z]+\d++$
,甚至,顺便说一句,我在我的Excel中检查过,我最多有1048576行和
XFD
列。使用正则表达式可能没那么容易。@WiktorStribiżew-我有一个问题-请参阅下面的答案。如何验证数字部分小于1048577?如何验证字母部分小于4个字母?我刚刚更新了答案,以检查最多4个字母。但只要我知道正则表达式是用于字符串的,它就不能计算值,而且您的约束也不能导致一个可以“轻松”实现为表达式的特定模式。您可以尝试将最大限制1048577拆分为多个条件(1或无),(0到9或无)。。。但这样的情况下,你不能得到准确的极限。