正则表达式:只有字母和必需的连字符

时间:2012-09-17 02:53:15

标签: regex

我需要构建一个只允许字母和连字符的正则表达式,但它需要连字符。

我试过了:

  • ^[a-z]+[a-z\-]+[a-z]+$(没有连字符的比赛)
  • ([A-Za-z\-]+)(没有连字符的匹配也通过)
  • [a-zA-Z][\-]+(它没有用)

有人可以写信给我吗?

提前致谢。

4 个答案:

答案 0 :(得分:1)

其他答案都不需要连字符。试试[a-zA-Z-]*[-][a-zA-Z-]*

答案 1 :(得分:0)

你需要展望未来:

^(?=.*-)[a-zA-Z-]+$

那个小表达式(?=.*-)是一个“向前看”,这是一个非消费的断言.*-出现在前方,这意味着“输入中需要连字符”

此外,当第一个或最后一个连字符是 literal 连字符时,不需要转义,否则连字符表示范围。

答案 2 :(得分:0)

我不确定您的问题是否列出了所有要求。除了你所说的一切,这个模式将允许字母和连字符,并且至少需要1个连字符。

[a-zA-Z-]*-[a-zA-Z-]*

这允许字符串" - "那可以吗?

答案 3 :(得分:-1)

你没说哪种语言,所以这里是Javascript:

Code-> "te-st".match(/[A-Za-z-]+/)
Result -> ["te-st"]