数字之间带连字符的正则表达式
本文关键字:正则表达式 连字符 之间 数字 | 更新日期: 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个字符。因此,在第二个示例中,正则表达式引擎安全地匹配零-
,以匹配整个字符串