我对Regex的要求如下所示美国货币(没有,)。
如果用户在TextBox(HTML)控件中输入金额,则应使用低于预期格式的自动格式化。
如果值为1111 - 则自动格式化为1111.00
如果值为1111.0 - 则自动格式化为1111.00
如果值为1111.00 - 则自动格式化为1111.00
我尝试过如下,但它无效。
Regex validate = new Regex("([0-9]*)[ (.00)]?");
if (validate.IsMatch(1111))
{
console.writeline(validate.Replace(1111, "$1.00"));
}
格式: $ 1.00
请提出任何建议
编辑:
在C#中
var p = regionSVG.clone();
d.append(p);
答案 0 :(得分:0)
我的解决方案一直不是基于正则表达式,但它可行并且可能会给你一些想法
class Program
{
static void Main(string[] args)
{
var list = new List<string>();
list.Add("1111");
list.Add("1111.0");
list.Add("1111.10");
foreach (string num in list)
{
Regex re = new Regex("([0-9]+)(?:\\.)?(\\d)?(\\d)?");
Match match = re.Match(num);
Console.WriteLine();
if (match.Success)
{
Console.WriteLine(match.Groups[1].Value + "." + match.Groups[2].Value.PadRight(1,'0') + match.Groups[3].Value.PadRight(1, '0'));
}
}
Console.Read();
}
}
谈到你的代码,正则表达式可能是这样的:
Regex validate = new Regex("([0-9]+)(?=\\.\\d{0,2})?");
if (validate.IsMatch("1111"))
{
Console.WriteLine(validate.Replace("1111", "$1.00"));
}
答案 1 :(得分:0)
var li = new List<string>()
{
"1111", "3333.0", "1111.00", "9999.4",
};
string MoneyDecimals(string num)
{
var rx1 = new Regex(@"\.\d$");
var rx2 = new Regex(@"^\d+$");
if (rx1.IsMatch(num))
return num + "0";
else if (rx2.IsMatch(num))
return num + ".00";
else
return num;
}
foreach (var item in li)
{
Console.WriteLine(MoneyDecimals(item));
}
//1111.00
//3333.00
//1111.00
//9999.40