Home > Back-end >  Character to appear anywhere in the string?
Character to appear anywhere in the string?

Time:01-10

I would like to create a RegEx that follows these rules:

  • Pattern starts with the letter K
  • Is followed by any number (0-9) or any letter (a-z) between 1 and 3 times.
  • The symbol # can exist 0 or 1 time, anywhere after the starting K.
  • The pattern must end with the symbol $.

I'm confused on the 3rd rule.

I have come up with this so far: (^K)([0-9a-z]{1,3}) that I believe is correct for the first two rules.

Some correct examples would be:

  • Kabc$
  • Ka#bc$
  • K01#a$
  • K#1ab$

CodePudding user response:

You can use

^K(?!.*#.*#)(?:#?[0-9a-z]){1,3}#?\$$

Or, variations of it:

^K(?!(?:.*#){2})(?:#?[0-9a-z]){1,3}#?\$$
^K(?!(?:[^#]*#){2})(?:#?[0-9a-z]){1,3}#?\$$

See the regex demo. Details:

  • ^ - start of string
  • K - the letter K
  • (?!.*#.*#) / (?!(?:.*#){2}) / (?!(?:[^#]*#){2}) - no two # are allowed immediately to the right of the current location (this makes sure that if there is a #, it only occurs once)
  • (?:#?[0-9a-z]){1,3} - one, two or three occurrences of
    • #? - an optional # char
    • [0-9a-z] - a lowercase ASCII letter or digit
  • #? - an optional #
  • \$ - a $ char
  • $ - end of string.
  •  Tags:  
  • Related