Mar*_*lor 2 .net c# regex numerical numeric
我正在使用C#和.NET,我有一个看起来像这样的正则表达式
"\D"
Run Code Online (Sandbox Code Playgroud)
这匹配所有非数字字符,但我不希望它匹配小数点(.)和负号( - ).我怎么能用正则表达式做到这一点?
所以我尝试了Chris'并做了一些调整以使其工作:
(我有一个名为"Original"的TextBox)
private void Original_TextChanged(object sender, EventArgs e) {
Regex regex = new Regex(@"[^\d.-]", RegexOptions.IgnoreCase);
Match match = regex.Match(Original.Text);
if (match.Success) {
Original.Text = regex.Replace(Original.Text, "");
Original.SelectionStart = Original.TextLength;
}
}
Run Code Online (Sandbox Code Playgroud)
这Original.SelectionStart = Original.TextLength;是因为每当它被替换时它将选择放在开头,这对用户来说似乎有点奇怪......
您可以使用否定的字符类来排除数字.,和-.匹配像这样的单个字符的表达式是[^\d\.\-].插入符号表示该类被否定.
Regex.IsMatch("a f", @"^[^\d\.\-]+$"); // true
Regex.IsMatch("a_f", @"^[^\d\.\-]+$"); // true
Regex.IsMatch("a.f", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("af-", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("-42", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("4.2", @"^[^\d\.\-]+$"); // false
Run Code Online (Sandbox Code Playgroud)