7位数字的正则表达式,中间有可选的特殊字符

时间:2019-05-23 09:37:28

标签: javascript regex

我需要验证一个7位数的数字,中间必须有一个破折号。

如果我在下面使用,我就能得到。

^(\d-?\d-?\d-?\d-?\d-?\d-?\d)$

有没有办法缩短它?

我尝试了^(\d+(-?){7})$,但是它不起作用。

Valid 123-09-23
Valid 12-3092-3
Valid 1-230-9-23
Valid 1234567

Invalid -1237883
Invalid 12345678
InValid 123-45-678

PS:我将在我的Javascript应用程序中实现它。

2 个答案:

答案 0 :(得分:3)

仅重复(7次,所以您总共得到7位数字),也不要重复\d(否则您可能会匹配比期望更多的数字):

^(?:\d-?){7}$

https://regex101.com/r/yLQHWW/1

(您的原始模式等效于:“匹配一位或多位数字,并可选地跟随最多7个-字符”。)

答案 1 :(得分:2)

以数字开头,并重复-?\d六次:

^\d(-?\d){6}$

https://regex101.com/r/oTSqri/1