C# 简单数字正则表达式不起作用

C# 简单数字正则表达式不起作用,c#,regex,C#,Regex,我想去掉一个字符串,使其只有数值和一个小数点。。。。 我的正则表达式怎么了 string test = "1e2e3.e4"; var s = Regex.Replace(test, "^\\d*\\.\\d*$", ""); 您要做的是去除一个十进制数,请尝试以下方法: Regex.Replace(test, "[^\\d.]", ""); 如果你只想保留一个点,你首先需要确定如果有很多点,你想保留哪个点 更新:假设要保留第一个或最后一个点,请使用String.IndexOf或String

我想去掉一个
字符串
,使其只有数值和一个小数点。。。。 我的正则表达式怎么了

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

您要做的是去除一个十进制数,请尝试以下方法:

Regex.Replace(test, "[^\\d.]", "");
如果你只想保留一个点,你首先需要确定如果有很多点,你想保留哪个点

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

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

在每个结果字符串上。这可能比不使用Matt Hamilton Response tough中的正则表达式要慢。

对于您的需要,正则表达式可能会有些过分

string test = "1e2e3.e4";
var s = Regex.Replace(test, @"[^\d\.]", "");
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));

您使用正则表达式进行匹配,但要替换它们吗?正则表达式可以满足您的需要。但是如果你想替换掉无效字符,你需要定义你想要什么。给定
1.2.3.4
,结果应该是什么<代码>123.4<代码>1.234<代码>12.34?等等…我只想允许数字和小数点。我将根据控件的某些属性以不同的方式处理多个小数点。。。有可能吗?如果我没弄错的话,会留下“^”字符。是的,你是对的,我想我想说的是,不是\d,不是\\。不需要第二个not谢谢MARKKAM:)希望这次是对的,我已经用一些字符串测试过了,现在看起来不错哇,非常聪明。不知道分配返回了一个值。。。