Javascript 包含if-else表达式的商务电话正则表达式

Javascript 包含if-else表达式的商务电话正则表达式,javascript,regex,Javascript,Regex,我正在尝试用javascript编写商业电话号码正则表达式,我的要求是: 它应该只包含数字、破折号和空格 它不应该以-结尾,但可以以空格结尾 两组之间应该只有1个- 它应该匹配带和不带-的数字,如1,123,678-78 我尝试过使用正则表达式,但是对于123--它失败了,因为它是无效的,任何人请给我一些建议 /^([ ]*[0-9]+[-]?[0-9 ]*?([-])[ ]*[0-9]+[ ]*|[0-9 ]*[ ]*)+$/.test('123--2') 试试这个 /^[0-9]+(-

我正在尝试用javascript编写商业电话号码正则表达式,我的要求是:

  • 它应该只包含数字、破折号和空格

  • 它不应该以
    -
    结尾,但可以以空格结尾
  • 两组之间应该只有1个
    -
  • 它应该匹配带和不带
    -
    的数字,如
    1
    123
    678-78
我尝试过使用正则表达式,但是对于
123--
它失败了,因为它是无效的,任何人请给我一些建议

/^([ ]*[0-9]+[-]?[0-9 ]*?([-])[ ]*[0-9]+[ ]*|[0-9 ]*[ ]*)+$/.test('123--2')
试试这个

/^[0-9]+(-[0-9\s]+)*$/

我不知道您是否仍然需要对此问题的答案,但这符合您的要求:

/^(?!.+-\s*$)\s*((?:\d+\s*-?\s*)+)$/
说明:

  • ^
    字符串的开头
  • (?!.+-\s*$)
    不允许字符串末尾出现
    -
    (或
    -
    ,后跟空格)
  • \s*
    可选前导空格
  • 开始捕获
  • (?:\d+\s*-?\s*)+
    以下一组或多组:
    • 一个或多个数字
    • 后面可能是空白
    • 可能后跟一个连字符
    • 后面可能有更多的空格
  • 停止捕获
  • $
    字符串的结尾

它也不应该以“
-
”结尾,对吗?@Pumbaa80是的,它不应该以-@Pumbaa80结尾,你能告诉我我在中做了什么错事吗?(exp)是的|没有部分?@Pumbaa80它返回false表示“1”,我的要求是它应该是真的