Shi*_*mmy 15 .net c# regex validation
我想验证一个电话号码.我的条件是我想要给定字符串中的最小7个数字,忽略分隔符,X,parantheses.
其实我想在正则表达式中实现这个功能:
Func<string, bool> Validate = s => s.ToCharArray().Where(char.IsDigit).Count() >= 7;
Func<string, bool> RegexValidate = s => System.Text.RegularExpressions.Regex.IsMatch(s, @"regex pattern should come here.")
string x = "asda 1234567 sdfasdf";
string y = "asda sdfa 123456 sdfasdf";
bool xx = Validate(x); //true
bool yy = Validate(y); //false
Run Code Online (Sandbox Code Playgroud)
我需要的目的是我想在asp:RegularExpressionValidator中包含这个正则表达式
Ala*_*ore 37
七个或更多数字,与任何其他类型的字符混合?这似乎不是一个非常有用的要求,但在这里你去:
^\D*(?:\d\D*){7,}$
Run Code Online (Sandbox Code Playgroud)
(?:\d.*){7,}
Run Code Online (Sandbox Code Playgroud)
(?:...) - 将包含的模式分组为原子单元\d - 匹配一个数字.* 匹配任何字符的0或更多{7,} 匹配前面模式的7个或更多如果您要忽略的唯一分隔符是空格,破折号,括号和字符"X",则使用此代码:
(?:\d[- ()X]*){7,}
Run Code Online (Sandbox Code Playgroud)
[...] 创建一个字符类,匹配任何一个包含的字符不同之处在于,例如,第一个正则表达式将匹配"a1b2c3d4e5f6g7h",而第二个正则表达式将不匹配.
正如Gregor在评论中指出的那样,正则表达式的选择取决于你使用它的功能.某些函数期望正则表达式匹配整个字符串,在这种情况下,您应该.*在前面添加一个额外的内容以匹配7位数之前的任何填充.有些人只希望正则表达式匹配字符串的一部分(这是我在我的例子中所期望的).
根据它的文档IsMatch()只"指示正则表达式是否在输入字符串中找到匹配",不要求它匹配整个字符串,因此您不需要修改我的示例以使它们起作用.
| 归档时间: |
|
| 查看次数: |
25460 次 |
| 最近记录: |