![](/img/trans.png)
[英]Regex pattern allowing alphabets, numbers, decimals, spaces and underscore
[英]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.