Home > Net >  Regex that doesn't end with a specific character compilation issue
Regex that doesn't end with a specific character compilation issue

Time:12-11

I have to make a regex that covers this conditions: The word can start with non mandatory _ Followed by [a-zA-Z] Followed by [a-zA-Z0-9_] -- 0 or more times And it cannot end with _

I have implemented this solution:

_*[a-zA-Z][a-zA-Z0-9_]*[^_]$

This regex can detect variables like: try_it But it cannot detect variables like: x, y, z

This regex will be used for lexical analysis

Acceptable:

a100__version_2
_a100__version2
x
y
z

Non acceptable:

100__version_2
a100__version2_
_100__version_2
a100--version-2

CodePudding user response:

This one may come in handy for matching your accepted words:

^_?[a-zA-Z](?:[a-zA-Z0-9_] [^_])?$

Regex Explanation:

  • ^: start of string symbol
  • _?: an optional underscore
  • [a-zA-Z]: a letter
  • (?:[a-zA-Z0-9_] [^_])?: an optional set of characters that doesn't end with an underscore
  • $: end of string symbol

Check the demo here.

  • Related