正则表达式只允许第一次出现字符

时间:2011-07-05 16:56:13

标签: c# regex

我有一些用户会输入一些数字的表单,我想阻止他们在这个字符串中输入多个逗号

我做了类似的事

var input = "1,,,,2";
var value = Regex.Replace(input, ",{1,}", ".");

这将输出1.2,这是正确的。但是如果我进入

var input = 1,,,2,3,,,4,5,,6

一切都失败了

id喜欢做的是将输入的最后一个版本形成为1.23456

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:2)

Regex.Replace (input, @"(?<=^\d+),", ".").Replace (",", "");

这会将第一个,逗号替换为.句点,然后将剩余的逗号替换为empty

答案 1 :(得分:1)

使用此正则表达式:(?<!,[^,]*?),+

var res = Regex.Replace(input, @"(?<!,[^,]*?),+", ".").Replace(",", string.Empty);

或者这段代码:

var res = Regex.Replace(input, @"(?<!,[^,]*?)(,+)|(,+)", 
    m => m.Groups[1].Success ? "." : string.Empty);

输出:1.23456