也许我没有正确地说这个,但我找不到任何有用的东西,所以我在这里。我需要匹配数字和短划线,精确长度为10个符号。正则表达式看起来像这样:
/[0-9-]{10}/g
问题在于,这将匹配' 8888888888'和' ----------'分别我想避免这种情况。我的输出应该类似于一个数字,因此我想匹配如果两者都是' - '和'数字'存在。它应该看起来像&#;; 555-45-217' 12-34-5412' 1-2-3-45-6。这就是我到目前为止所做的:
([0-9]+-[0-9]+(-[0-9]+)*){10}
但这不起作用。当跟随()时,{}只会出错。所以我的问题是如何才能实现这样的目标?仅当两个条件(内部规则和符号的适当数量)存在时,如何匹配。
答案 0 :(得分:1)
我认为你可以使用
^(?=[0-9-]{10}$)\d+(?:-\d+)+$
请参阅regex demo
<强>详情:
^
- 字符串开头(?=[0-9-]{10}$)
- 该字符串应仅包含10个字符,数字或-
\d+
- 一位或多位(?:-\d+)+
- 一个或多个-
序列后跟1+位数$
- 字符串结束。