正则表达式检查它只包含字母数字,但最多只有2位数,允许空格,最多1个连字符,允许1个逗号?

时间:2009-09-09 08:29:59

标签: .net regex

字符串可以有字母[a-zA-Z] 它可以有数字[0-9]但是最小0和最大2 允许空格 对于特殊字符最多1个连字符和最大1个逗号

2 个答案:

答案 0 :(得分:7)

有几种方法可以做到这一点。这是使用预见断言的一个:

^(?=[^ ]* ?[^ ]*(?: [^ ]*)?$)(?=[^-]*-?[^-]*$)(?=[^,]*,?[^,]*$)[a-zA-Z0-9 ,-]*$

答案 1 :(得分:4)

我想要注意的是,这可以很容易地在没有正则表达式的情况下以更加可维护的方式实现(如果下个月你想要3个破折号和5个数字会怎么样 - 这个正则表达式看起来怎么样?)。 /> 考虑:

string s = "abcd2,6  ";
bool valid =
    (
        (s.Count(' '.Equals) <= 2) &&
        (s.Count(','.Equals) <= 1) &&
        (s.Count('-'.Equals) <= 1) &&
        (s.Count(char.IsDigit) <= 2)
    );

(即使你没有linq,也可以轻松完成)

如果您还想检查英文字母,可以与@"^[a-zA-Z0-9 ,-]*$"匹配 - 这将检查字符但不计算它们(我从Gumbo的正则表达式中略去一点)。