[英]Regex of phone number - how to make sure the user won't put +-*+-*+-*+-*?
我想允许用户仅输入以下模式:
+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*+-]+$");
}
为了这个目的?
^(?!(.*\+){2})(?!(.*-){2})(?!(.*\*){2})[0-9*+-]+$
您可以lookaheads
使用以确保special characters
仅出现once
参阅演示。
您首先需要做的就是确定模式到底是什么。 不需要在代码中。 在您的示例中,我看到一个前导字符,后跟第一个数字组,然后是可选的破折号和第二个数字组。 前导字符可以是+,*或0。数字组是1到9之间的一位数字,后跟一个或多个0到9数字。转换每个元素将得到:
组长:[+ * 0]
破折号:-
号码组:[1-9] [0-9] +
把所有东西都扔在一起
[\+\*0][1-9][0-9]+(-[1-9][0-9]+)?
某些组可能具有最小和最大长度,您仍然可以将+更改为{min,max}。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.