Home > Mobile >  Regex to match multiple cases
Regex to match multiple cases

Time:04-29

I have the following examples that must match with my regex

1,[]
1,[0,0,0,[]]
1,[0,0,0,0,0,[]]
1,1
1

I came up with a simple way of matching the middle ones with .?,\[.*\[\]\] but it doesnt match the first and the last one.

Maybe this is too much to handle with regex but I want to check the following things:

  1. If there is a ',' it should have a following character or characters(numbers or letters)
  2. If a bracket is opened: it should close '[]'
  3. The bracket insides can be whatever but it must respect rule 1 and 2.

I am trying to find a solution so I'm grateful if you can help me. Thank you.

CodePudding user response:

You can use

^\d (?:,(?:(\[(?:[^][]  |\g<1>)*])|\d ))?$

See the regex demo. Details:

  • ^ - start of string
  • \d - one or more digits
  • (?:,(?:(\[(?:[^][] |\g<1>)*])|\d ))? - an optional sequence of
    • , - a comma
    • (?:(\[(?:[^][] |\g<1>)*])|\d ) - one of the alternatives:
      • (\[(?:[^][] |\g<1>)*]) - Group 1: [, then zero or more occurrences of one or more chars other than [ and ] or Group 1 pattern recursed
      • | - or
      • \d - one or more digits
  • $ - end of string.
  • Related