簡體   English   中英

小數或小數的正則表達式模式

[英]Regex Pattern for Decimals or Fraction

我對正則表達式模式感到糟糕。 我正在嘗試以整數(1234),十進制(1234.50)或小數(1234 1/2)的形式驗證輸入(使用C#)。 我目前正在使用此模式

[^ 0-9。] +

僅處理整數和小數。 有沒有辦法我可以擴展它來處理分數?

您可以使用以下正則表達式:

^\(\d+(?:\.?\d*|\s\d+\/\d+)\)$

工作演示

如果您不想包含括號,可以使用

^\d+(?:\.?\d*|\s\d+\/\d+)$

您可以輕松看到兩種十進制/分數模式:

正則表達式可視化

正則表達式是好的,如果你只是希望驗證字符串存儲輸入的string 但是,如果要對數值進行任何運算,最好還是嘗試直接解析該值。

string input = "1234 1/2";
decimal? inputAsDec = null;
decimal? fractionAsDec = null;
var wholeAndFraction = input.Split(' ');

if (wholeAndFraction.Count == 2 && input.Contains('/'))
{
    var fraction = wholeAndFraction[1].Split('/');
    decimal? numerator = null;
    decimal? denominator = null;

    if (decimal.TryParse(fraction[0], out numerator) && decimal.TryParse(fraction[1], out denominator))
    {
        fractionAsDec = numerator / denominator;
    }
}

if (decimal.TryParse(wholeAndFraction[0], out inputAsDec))
{
    if (fractionAsDec != null)
    {
        inputAsDec += fractionAsDec;
    }
}

這應該工作:

\d*(?:\s+\d+/\d+|\.\d+)?

暫無
暫無

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

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