正则表达式允许单词中的多个短划线但不能连续2个

时间:2016-03-28 18:38:59

标签: regex

到目前为止:

Shawn-Shawn

但这不需要:

Shawn-Shawn-Shawn

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

/^[a-z]+[\-]?[a-z]+$/i

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

/^[a-z]+(?:-[a-z]+)*$/i

非捕获组(?:-[a-z]+)*允许0个或更多个连字符后跟字母0次或更多次匹配,从而允许输入中的多个连字符以字母分隔,但不是这些情况:

  1. 不重复-
  2. 在sttrt或结束时没有连字符
  3. RegEx Demo

答案 1 :(得分:1)

这可能会这样做,它允许添加任意数量的词:

^[a-z]+([\-]?[a-z]+)+$

https://regex101.com/r/aF4pL2/1

编辑:下面的评论显示了这个问题,我赞成了另一个答案