javascript - 正则表达式用于有限的数字,无限的中间破折号?

标签 javascript regex

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

他可以有尽可能多的(中间)个破折号(-)但是数字的总数必须是10。

I've managed使用数字中的 "-" 的正面前瞻编写正则表达式:

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

但是我有两个问题:

  • 破折号(在我的正则表达式中)也可以在开头和结尾,这是无效

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

附注有效示例:

050-6783828 050-678-38-28 0506783828

有效:

-0506783826 0506783826- 050678--3826

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

最佳答案

我想你想要这样的东西:

^\d(?:-?\d){9}$
  • 以数字开头。
  • 9 次:可选破折号和另一个数字。

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

关于javascript - 正则表达式用于有限的数字,无限的中间破折号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17468677/

相关文章:

DOM 元素上的 Javascript 转换

javascript - 使用 XMLhttprequest 从函数返回值

java - Java 中的正则表达式 : Finding the numbers that follow a given set of substrings

python - 如何提取某个单词前的数字?

C# RegEx 同时匹配字符串开头和单词开头

java - 根据此模式检查任何文本 :A sentence that consist of two or more questions

python - 在 Python 中从带有重音符号的字符串中删除所有非字母字符

javascript - XMLHttpRequest JS 图片加载

javascript - Angularjs 无法找到我的 Controller

javascript - getJSON 警报不返回任何内容 - 数据问题?