Regular expression to validate Excel cell

前端 未结 2 1699
臣服心动
臣服心动 2021-01-24 20:05

I\'m working on a php application where the user has to insert an Excel\'s cell id (for example A1 or AB32), a value which is stored in the database fo

相关标签:
2条回答
  • 2021-01-24 20:16

    There's an awesome answer in this question by @BartKiers where he builds a function to construct these type of regexes that need to match ranges of x to y. His logic transfers nicely to text ranges and is tested in PCRE dialect at regex101.com.

    The regex:

    ^(?:[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])$

    Which basically says:

    • Columns part: A-Z, or A-Z with A-Z, or A-X with A-F with A-D

    • Rows part: 1-9, or 1-9 with 0-9, or 1-9 with 1-9 with 0-9 etc all the way to the max of 104857 with 0-6

    It matches the following:

    A1
    AA11
    AAA111
    ZZ12
    YY1048575
    XFD1048576
    

    It will not match the following:

    A0
    AA01
    AAZ1111111
    XFD1048577
    XFE1048576
    ZZZ333
    ZZZ9999999
    

    Here's the diagram:

    0 讨论(0)
  • 2021-01-24 20:35

    try this ^[a-zA-Z]{1,4}(\d+)$

    • ^([a-zA-Z]+) : starting between 1 and 4 letters
    • (\d+)$ : ending with one digit or more
    0 讨论(0)
提交回复
热议问题