![](/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.