正则表达式允许一个单词中出现多个破折号,但不允许连续出现两个破折号

Sha*_*awn 2 regex

到目前为止已经过去了:

Shawn-Shawn
Run Code Online (Sandbox Code Playgroud)

但这不需要并且需要:

Shawn-Shawn-Shawn
Run Code Online (Sandbox Code Playgroud)

这是我的正则表达式,很好奇为什么可选选项不允许它,即使它仍然以字符结尾

/^[a-z]+[\-]?[a-z]+$/i
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 5

您可以使用这个正则表达式:

/^[a-z]+(?:-[a-z]+)*$/i
Run Code Online (Sandbox Code Playgroud)

非捕获组(?:-[a-z]+)*允许 0 次或多次连字符匹配,后跟字母 0 次或多次,因此允许输入中使用多个连字符并用字母分隔,但以下情况除外:

  1. 不再重复-
  2. strt 或 end 处没有连字符

正则表达式演示