有限数量的正则表达式,无限中间破折号?

Roy*_*mir 6 javascript regex

用户可以填写电话号码.(只有数字和破折号,破折号不是强制性的)

他可以拥有尽可能多的(中间)破折号(-),但总数字数必须为10.

我用"-"数字中的正向前瞻来编写正则表达式:

^(?=.*\-)[0-9\-]+$

但我有两个问题:

  • 短划线(在我的正则表达式中)也可以在开头和结尾,这是无效的.

  • 我没有成功应用10位数限制.

ps 有效示例的示例:

050-6783828 050-678-38-28 0506783828

没有有效:

-0506783826 0506783826- 050678--3826

ps2请注意这个问题被标记为正则表达式.我不是在寻找js(非正则表达式)解决方案.

Kob*_*obi 8

我想你想要这样的东西:

^\d(?:-?\d){9}$
Run Code Online (Sandbox Code Playgroud)
  • 从数字开始.
  • 9次:可选短划线和另一位数字.

工作示例:http://rubular.com/r/CrgTOrXC8E