数字之间带连字符的正则表达式

本文关键字:正则表达式 连字符 之间 数字 | 更新日期: 2023-09-27 17:57:26

我必须检查用户输入的字符串是否为以下特定格式,例如:

123-1234-1234567-1

即在前3位数字之后是一个连字符,然后在4位数字之后又是一个连字号,在7位数字之后再是一个个连字符。

我使用了以下正则表达式

@"^'(?([0-9]{3})')?[-. ]?([0-9]{4})[-. ]?([0-9]{7})[-. ]?([0-9]{1})$"

它在上面的表达式中工作良好,但它也会通过没有-的表达式以及

eg:-  123-1234-1234567-1 //pass
      123123412345671    //also getting pass.

第二个字符串应该失败。我应该在正则表达式中做什么更改才能达到同样的效果?

数字之间带连字符的正则表达式

您可以简单地使用:

^'d{3}-'d{4}-'d{7}-'d$

如果你想允许点和空格也作为分隔符,那么使用:

^'d{3}[-. ]'d{4}[-. ]'d{7}[-. ]'d$

问题是在[. ]之后有可选的量词?。删除它们,它应该工作良好

@"^'(?([0-9]{3})')?[-. ]([0-9]{4})[-. ]([0-9]{7})[-. ]([0-9]{1})$"

Regex演示

?使前面的模式可选,因为它匹配0或1个字符。因此,在第二个示例中,正则表达式引擎安全地匹配零-,以匹配整个字符串