簡體   English   中英

轉換算法以將NIPC / NIF驗證為C#正則表達式(正則表達式)

[英]Convert algorithm to validate NIPC / NIF into a C# Regex (Regular Expression)

我有一個簡單的算法可以驗證葡萄牙的NIPC / NIF標識:

private bool IsNIPCCorrect(String nifString)
    {
        int controlDigit = 0;

        for (int i = 0; i < nifString.Length - 1; i++)
        {
            controlDigit += (int)Char.GetNumericValue(nifString[i]) * (10 - i - 1);
        };

        controlDigit = controlDigit % 11;

        if (controlDigit <= 1)
        {
            controlDigit = 0;
        }
        else
        {
            controlDigit = 11 - controlDigit;
        }

        if (controlDigit == (int)Char.GetNumericValue(nifString[8]))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

我想知道是否可以生成一些Regex來在幾行中驗證該標識。

初步驗證:

  • 長度:9位數字
  • 控制數字:nifString [8]
  • 如何驗證:

    1. sum = nifString [7] * 2 + nifString [6] * 3 + nifString [5] * 4 + nifString [4] * 5 + nifString [3] * 6 + nifString [2] * 7 + nifString [1] * 8 + nifString [0] * 9
      1. if(sum%11 <= 1)controlDigit = 0
      1. else controlDigit = 11-(總和11)
    2. 然后檢查是否(controlDigit == nifString [8])

我一直在考慮類似下一個初始模式= [0-9] {9} | \\ d {9}

但是我怎么也只能將Regex用於最終驗證呢?

問候!

正則表達式無法為您計算,但是首先要檢查的合適代碼是^ \\ d {9} $

您需要在運行其余代碼之前進行此檢查,就像字符串中沒有9個字符一樣,您會在nifString [8]點得到一個錯誤。

因此,無效的NIF 12345將導致錯誤而不是返回false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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