简单的数字正则表达式无法正常工作

时间:2011-02-10 03:59:56

标签: c# regex

我想剥离string只有数值和一个小数点.... 我的正则表达式出了什么问题?

string test = "1e2e3.e4";
var s = Regex.Replace(test, "^\\d*\\.\\d*$", "");

3 个答案:

答案 0 :(得分:1)

你正在做的是删除一个十进制数字,试试这个:

Regex.Replace(test, "[^\\d.]", "");

如果您只想保留一个点,首先需要确定哪个点要保留,如果有多个点。

更新:假设您要保留第一个或最后一个点,请使用String.IndexOfString.LastIndexOf拆分字符串并使用:

Regex.Replace(test, "\\D", "");

在每个结果字符串上。这可能比不使用正则表达式更慢,就像在Matt Hamilton回答艰难时那样。

答案 1 :(得分:1)

正则表达式对您的需求可能过度。

string test = "1e2e3.e4.56543fds.4";

var foundPeriod = false;

var chars = test.Where(c => Char.IsDigit(c) 
    || (c == '.' && !foundPeriod && (foundPeriod = true))).ToArray();

Console.WriteLine(new String(chars));

答案 2 :(得分:0)

string test = "1e2e3.e4";
var s = Regex.Replace(test, @"[^\d\.]", "");