我正在开发一个php应用程序,用户必须插入一个Excel的单元格id(例如A1
或AB32
),这个值存储在数据库中供以后使用,我我试图使用正则表达式验证单元格id格式,但它似乎没有用,这是我到目前为止所做的。
^[a-zA-Z]\d$
答案 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-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
这是图表:
答案 1 :(得分:0)
试试这个^[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