如何设置此正则表达式的最大长度?

Baz*_*nga 5 regex

此验证适用于允许字母数字字符、空格和破折号,但我无法将最大长度设置为 23。

正则表达式: (^\w+\s*(-?)(\s*\w+\s*)(\w+)$){0,23}

我需要通过的案例:

  • 温斯顿1-塞勒姆6
  • 温斯顿-塞勒姆
  • 温斯顿塞勒姆
  • 1-23
  • 带空格的 word2

我需要失败的案例:

  • -纽伯蒂-洛斯-
  • 12345678901234567890123444

Exp*_*lls 6

单独检查长度可能更方便,但您可以使用前瞻来确认整个表达式在 0 到 23 个字符之间。

(?=^.{0,23}$)(^\w+\s*(-?)(\s*\w+\s*)(\w+)$)
Run Code Online (Sandbox Code Playgroud)

http://rubular.com/r/GVIbG8hDKz