正则表达式必须至少为6位数字,但该数字可以在任何地方

时间:2019-01-10 16:49:54

标签: c# regex lookahead

我只允许数字,空格和以下字符:
\
+

我希望至少为6个数字。数字可以在字符串中的任意位置

这是我能得到的最接近的

^(?=.{6,})[0-9\-\+\(\\) ]*$

我的代码有效,但要求最少6位数字。 (它至少会强制使用6个字符。)

输入不匹配的文本:

  

+()1234

输入应匹配的文本:

  

+(44)78666-05529

1 个答案:

答案 0 :(得分:2)

您当前的前瞻^(?=.{6,})断言,从字符串开头算起的任何字符都是6倍或更多倍。

如果数字可以在字符串中的任何位置,则必须使用正向超前和非捕获组(?:.*[0-9]){6}来声明数字6次。

请注意,这并不能说明示例数据中数字的确切格式。

^(?=(?:.*[0-9]){6})[0-9\-+(\\) ]*$

Regex demo