正则表达式以验证Excel单元格

时间:2016-12-27 14:55:18

标签: php regex excel expression cell

我正在开发一个php应用程序,用户必须插入一个Excel的单元格id(例如A1AB32),这个值存储在数据库中供以后使用,我我试图使用正则表达式验证单元格id格式,但它似乎没有用,这是我到目前为止所做的。

^[a-zA-Z]\d$

3 个答案:

答案 0 :(得分:1)

@BartKiers在这个问题中有一个很棒的answer,他构建了一个函数来构造需要匹配x到y范围的这类regex。他的逻辑很好地转移到文本范围,并且在regex101.com上是tested in PCRE dialect

正则表达式:

getItem

基本上说:

  • 列部分:^(?:[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-ZA-Z A-X A-F

  • 行部分:A-D1-91-90-91-9一起1-9等最高0-9104857

符合以下条件:

0-6

它与以下内容不符:

A1
AA11
AAA111
ZZ12
YY1048575
XFD1048576

这是图表:

enter image description here

答案 1 :(得分:0)

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

  • ^([a-zA-Z] +):从1到4个字母开始
  • (\ d +)$:以一位数或更多位数结尾

答案 2 :(得分:0)

也许^([A-Z]{1,3})([1-9]\d{0,6})$

或A1~XDF1048576:

"^(?:[A-Z]{1,2}|" +                  // A   - ZZ
"[A-W][A-Z][A-Z]|" +                 // AAA - WZZ
"X[A-E][A-Z]|" +                     // XAA - XEZ
"XF[A-D])" +                         // XFA - XFD
"(?:[1-9][0-9]{0,5}|" +              // 1       - 999999
"10[0-3][0-9][0-9][0-9][0-9]|" +     // 1000000 - 1039999
"104[0-7][0-9][0-9][0-9]|" +         // 1040000 - 1047999
"1048[0-4][0-9][0-9]|" +             // 1048000 - 1048499
"10485[0-6][0-9]|" +                 // 1048500 - 1048569
"104857[0-6])$"                      // 1048570 - 1048576