我有一个正则表达式(@"[0-9\. \-\*\(\)]*"
),只允许我的字符串中的某些字符。我想知道如何检查该字符串是否包含至少5个这些字符的子集,即[0-9]
。
我可以使用@"[0-9]{5,}"
,但这不允许输入中我想要的其他字符。
我可以使用@"[0-9\. \-\*\(\)]{5,}"
,但这将允许不包含5位数的输入。
我可以使用@"[0-9]{5,}[0-9\. \-\*\(\)]*"
,但这需要5位数字位于输入的开头。
如何检查我的输入至少有5位数字,同时还允许其他字符?
-
例如,我想匹配:
12345
或123 4-5
但不是
1 3-5
或*- 4--*
。
答案 0 :(得分:0)
大多数角色在角色组中并不特殊,因此您无需逃脱它们。
@"[0-9. *()-]*(?<=([. *()-]*[0-9][. *()-]*){5,})";
此模式说找到一串有效字符,然后验证字符串的结尾前面是一串包含至少5位数字的有效字符。
我认为您的原始表达式没有将匹配限制在整个字符串(找到电话号码?),但是如果您需要匹配整个字符串,那么这就是原因:
@"^(?=(.*[0-9].*){5})[0-9. *()-]*$"
这有点简单 - 检查字符串是否至少有5位数,并且只包含有效字符。如果您需要包含空字符串,则需要进行更改。
如果您尝试验证电话号码,则两个表达式都过于简单,因为它们会接受((())12--33--44
等字符串。