亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用正則表達式驗證字符串

使用正則表達式驗證字符串

C#
呼啦一陣風 2021-10-24 19:20:24
我正在嘗試使用此正則表達式驗證字符串var regexAgencia = new Regex("^(?!0000)([0-9]{4})");var result = regexAgencia.IsMatch(agencia);有效選項:N-XNN-XNNN-XNNNN-XNNN NNN NNNN無效選項:0-X 00-X 000-X 0000-X0000000000其中 N 是任何數字 0-9,X 可以是 X 或 0-9當我驗證這個“014777417”時,正則表達式返回真我需要幫助編寫一個正則表達式來使用此規則驗證此字符串。
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

這應該為你做:

^(?=\d*[1-9])\d{1,4}(?:-[X\d])?$

它從正面展望開始,以確保存在除零以外的數字 ( (?=\d*[1-9]))。此后它匹配 1-4 位數字,可選后跟一個連字符和一個數字 or X


查看完整回答
反對 回復 2021-10-24
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

你當然可以只通過 Regex 來做到這一點,但是,我總是對創建以下代碼有一種揮之不去的恐懼:


1) 只有我明白或記得 2) 回想起來連我都不明白


本著這種精神,似乎如果你做一個簡單的拆分,你的字符串可能更容易評估:


string[] parts = agencia.Split('-');

if ((parts.Length == 1 && Regex.IsMatch(agencia, @"^\d{1,4}$")) ||

    (parts.Length == 2 && Regex.IsMatch(parts[0], @"^\d{1,4}$")) && 

        Regex.IsMatch(parts[1], @"^[0-9X]$"))

{


}

- 編輯 -


我不知道您是否想要 0,所以如果您不想要,請\d從更改為[1-9]。


查看完整回答
反對 回復 2021-10-24
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

有兩個測試會更容易:一個檢查它是否有效,然后一個排除所有前導零無效的特殊情況:


static void Main(string[] args)

{

    string[] agencias = { "", "1234-5", "0-9", "014777417", "0000", "1-23", "01-0", "1-234 abcd", "0123-4" };


    var regexAgenciaValid = new Regex("^(([0-9]{1,4})(-[0-9])?)$");

    var regexAgenciaInvalid = new Regex("^((0{1,4})(-[0-9])?)$");


    foreach (string agencia in agencias)

    {

        var result = regexAgenciaValid.IsMatch(agencia) && !regexAgenciaInvalid.IsMatch(agencia);

        Console.WriteLine(agencia + " " + result);

    }


    Console.ReadLine();


}

輸出:


 False

1234-5 True

0-9 False

014777417 False

0000 False

1-23 False

01-0 True

1-234 abcd False

0123-4 True

這樣做的好處是將來更容易修改。


查看完整回答
反對 回復 2021-10-24
  • 3 回答
  • 0 關注
  • 254 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號