正则表达式 - 三种情况的一种模式,有/无减号/没有任何数字

fre*_*red 0 regex

在我们的应用程序中,需要一种模式来验证以下三种情况:

  1. "任何字符"+" - "+"任何字符"+"数字" // ^([a-zA-Z]+)-([a-zA-Z]+[0-9]+)
  2. 或"任何人物"+"一个数字" // ^([a-zA-Z]+[0-9]+)
  3. 或"任何角色"(最后没有任何数字)

我不能让它运行(3)条件并将它们组合成一个模式.有人可以帮我吗?

ndn*_*kov 5

^(?:([a-zA-Z]+)-)?([a-zA-Z]+([0-9]+))$|^([a-zA-Z]+)$
Run Code Online (Sandbox Code Playgroud)

我得到了你的第一个模式.

我将"任意字符"+" - "设为可选,以便它也适用于第二种情况.

我为第三种情况添加了另一种选择 - |^([a-zA-Z]+).


没有不必要组的更易读的版本:

^(?:(?:[a-zA-Z]+-)?[a-zA-Z]+[0-9]+|[a-zA-Z]+)$
Run Code Online (Sandbox Code Playgroud)