正则表达式以随机顺序精确计算字符数

Regex for exactly number of chars in random order

我有一个接受 8-10 个字符的正则表达式:仅 # 和 -(随机顺序)

^[-#]{8,10}$

但我正好需要 8 个 # 和 0-2 个 -

例如,正确的字符串是:

-########-
########
##-###-###

正则表达式

^[#]{8}[-][0,2]$

它不起作用,因为在此特定顺序中仅接受 8 个 # 和一些 -

您可以断言 8-10 个字符,并匹配被可选 - 个字符包围的 8 # 个字符

^(?=.{8,10}$)(?:-*#){8}-*$

说明

  • ^ 字符串开头
  • (?=.{8,10}$) 正面前瞻断言总共 8 - 10 个字符
  • (?:-*#){8}匹配8次可选-然后#
  • -* 匹配可选尾随 -
  • $ 字符串结束

看到一个regex demo