JAN*_*JAN -1 .net c# regex visual-studio
我想允许用户只输入以下模式:
9720545455454
056565656345
03-43434344
0546-4234234
*9090
+ 97203-0656534
意思是,我不想让用户一起乱搞一切,比如:
+ 954-4343 + 3232*4343 + -
+ -4343- + 5454 + 9323 + 234
我该如何修复这个模式
public static bool IsPhoneNumberCorrect(string phoneNumber)
{
return Regex.IsMatch(phoneNumber, @"^[0-9*+-]+$");
}
Run Code Online (Sandbox Code Playgroud)
为了这个目的?
如果您不关心数字组长度,您可以允许+或*仅在开头,然后匹配初始数字,然后匹配连字符+数字的可选组:
return Regex.IsMatch(phoneNumber, @"^[+*]?\d+(?:-\d+)*$");
Run Code Online (Sandbox Code Playgroud)
见演示
请注意,您可以使用量词限制连字符+数字的数量.说,可以没有或1:
^[+*]?\d+(?:-\d+)?$"
^
Run Code Online (Sandbox Code Playgroud)
如果可以超过1,请使用限制量词:
^[+*]?\d+(?:-\d+){0,3}$"
^^^^^
Run Code Online (Sandbox Code Playgroud)
这里,{0,3}表示连字符+数字组的重复0,1,2或3次.