检查输入至少有5位数,同时允许其他特定字符

时间:2018-01-23 22:11:55

标签: regex

我有一个正则表达式(@"[0-9\. \-\*\(\)]*"),只允许我的字符串中的某些字符。我想知道如何检查该字符串是否包含至少5个这些字符的子集,即[0-9]

我可以使用@"[0-9]{5,}",但这不允许输入中我想要的其他字符。

我可以使用@"[0-9\. \-\*\(\)]{5,}",但这将允许不包含5位数的输入。

我可以使用@"[0-9]{5,}[0-9\. \-\*\(\)]*",但这需要5位数字位于输入的开头。

如何检查我的输入至少有5位数字,同时还允许其他字符?

-

例如,我想匹配:

12345123 4-5

但不是

1 3-5*- 4--*

1 个答案:

答案 0 :(得分:0)

大多数角色在角色组中并不特殊,因此您无需逃脱它们。

@"[0-9. *()-]*(?<=([. *()-]*[0-9][. *()-]*){5,})";

此模式说找到一串有效字符,然后验证字符串的结尾前面是一串包含至少5位数字的有效字符。

我认为您的原始表达式没有将匹配限制在整个字符串(找到电话号码?),但是如果您需要匹配整个字符串,那么这就是原因:

@"^(?=(.*[0-9].*){5})[0-9. *()-]*$"

这有点简单 - 检查字符串是否至少有5位数,并且只包含有效字符。如果您需要包含空字符串,则需要进行更改。

如果您尝试验证电话号码,则两个表达式都过于简单,因为它们会接受((())12--33--44等字符串。