具有特定长度的复杂正则表达式模式

时间:2016-10-03 21:01:31

标签: regex

也许我没有正确地说这个,但我找不到任何有用的东西,所以我在这里。我需要匹配数字和短划线,精确长度为10个符号。正则表达式看起来像这样:

/[0-9-]{10}/g 

问题在于,这将匹配' 8888888888'和' ----------'分别我想避免这种情况。我的输出应该类似于一个数字,因此我想匹配如果两者都是' - '和'数字'存在。它应该看起来像&#;; 555-45-217' 12-34-5412' 1-2-3-45-6。这就是我到目前为止所做的:

([0-9]+-[0-9]+(-[0-9]+)*){10}

但这不起作用。当跟随()时,{}只会出错。所以我的问题是如何才能实现这样的目标?仅当两个条件(内部规则和符号的适当数量)存在时,如何匹配。

1 个答案:

答案 0 :(得分:1)

我认为你可以使用

^(?=[0-9-]{10}$)\d+(?:-\d+)+$

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • (?=[0-9-]{10}$) - 该字符串应仅包含10个字符,数字或-
  • \d+ - 一位或多位
  • (?:-\d+)+ - 一个或多个-序列后跟1+位数
  • $ - 字符串结束。