簡體   English   中英

正則表達式和電話號碼

[英]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)$)

如果這對您來說更快或更實用。

https://regex101.com/r/GOyOgf/1

為簡單起見,我會將它們分成 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM