Здесь мы можем просто захотеть написать три выражения и смахнуть наши входы слева направо, чтобы быть в безопасности и соединить их, используя логические ИЛИ, и в случае, если у нас было больше шаблонов, мы можем просто добавить к ним, как:
([a-z]+-[a-z]+[0-9]+-[a-z]+)
([a-z]+[0-9]+-[a-z]+[0-9]+-[a-z])
([a-z]+-[a-z]+-[a-z])
, что добавило бы к:
([a-z]+-[a-z]+[0-9]+-[a-z]+)|([a-z]+[0-9]+-[a-z]+[0-9]+-[a-z])|([a-z]+-[a-z]+-[a-z])
Тогда, возможно, мы захотим связать его начальным и конечным символами:
^([a-z]+-[a-z]+[0-9]+-[a-z]+)$|^([a-z]+[0-9]+-[a-z]+[0-9]+-[a-z])$|^([a-z]+-[a-z]+-[a-z])$
или
^(([a-z]+-[a-z]+[0-9]+-[a-z]+)|([a-z]+[0-9]+-[a-z]+[0-9]+-[a-z])|([a-z]+-[a-z]+-[a-z]))$
* +1012 *
RegEx
Если это выражение нежелательно, его можно изменить или изменить в regex101.com .
RegEx Circuit
jex.im визуализирует регулярные выражения:
![enter image description here](https://i.stack.imgur.com/ZzDIv.png)