简单正则表达式,匹配任何字符串与至少一个连字符

max*_*axp 10 regex

我对一个看似简单的特殊正则表达式感到有些困惑.

匹配必须是仅包含az,AZ,0-9的字符串,并且必须在字符串中的任何位置至少出现一个" - "字符.

我有,[a-zA-Z0-9-]+但问题是,它也将匹配那些没有' - '字符的人.

ABC123-ABC //should match

ABC123ABC //shouldn't match.
Run Code Online (Sandbox Code Playgroud)

Pet*_*nov 24

这应该工作:

^([a-zA-Z0-9]*-[a-zA-Z0-9]*)+$
Run Code Online (Sandbox Code Playgroud)

此外,如果你想要正好135个连字符:

^([a-zA-Z0-9]*-[a-zA-Z0-9]*){135}$
Run Code Online (Sandbox Code Playgroud)

或者如果你想要至少有23个连字符但不超过54个连字符:

^([a-zA-Z0-9]*-[a-zA-Z0-9]*){23,54}$
Run Code Online (Sandbox Code Playgroud)

你明白了:)