[英]Regex & Phone Numbers
所以我一直在努力創建一個正則表達式來驗證以下格式的電話號碼 XXX-XXX-XXXX 到目前為止效果很好,但現在我想弄清楚如何刪除輸入特定數字的能力,比如“123-456-7890”。
我目前的正則表達式是
(^[0-9]{3}-[0-9]{3}-[0-9]{4}$)
我已經研究了幾天,但我似乎無法弄清楚要在我當前的表達式中添加什么以獲得“格式為 XXX-XXX-XXXX 但不是 123-456-7890 的任何數字”
誰能幫我這個?
太感謝了
如果您正在運行的任何版本都支持負面前瞻,那么這應該有效:
(^(?!123-456-7890)[0-9]{3}-[0-9]{3}-[0-9]{4}$)
它與您使用的表達式相同,只是在開頭添加了否定的前瞻性。
(?!123-456-7890)
檢查前面的字符序列是否與模式“123-456-7890”不匹配。
只有滿足此條件,才會考慮模式的 rest。
同樣可以通過使用后視表達式(?<!123-456-7890)
在匹配模式后進行檢查來完成
(^[0-9]{3}-[0-9]{3}-[0-9]{4}(?<!123-456-7890)$)
如果這對您來說更快或更實用。
為簡單起見,我會將它們分成 2 個正則表達式,您可以對不匹配項使用交替,如下所示:
var regexToMatch = new Regex("(^[0-9]{3}-[0-9]{3}-[0-9]{4}$)");
var regexToNotMatch = new Regex("(123-456-7890)|(098-765-4321)");
var testString = "123-456-7890";
if(regexToMatch.IsMatch(testString) && !regexToNotMatch.IsMatch(testString))
{
Console.WriteLine("Valid!");
}
else
{
Console.WriteLine("Not Valid!");
}
這是它的工作小提琴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.