[英]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.