Я работаю над приложением php, где пользователь должен вставить идентификатор ячейки Excel (например, A1
или же AB32
), значение, которое хранится в базе данных для последующего использования, и я пытаюсь проверить формат идентификатора ячейки с помощью регулярного выражения, но оно просто не работает, это то, что я получил до сих пор.
^[a-zA-Z]\d$
Там потрясающе ответ в этом вопросе @BartKiers, где он строит функцию для построения регулярных выражений такого типа, которые должны соответствовать диапазонам от x до y. Его логика прекрасно переносится в текстовые диапазоны и протестировано на PCRE диалекте на regex101.com.
Регулярное выражение:
^(?:[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]{1,4}(\d+)$