正则表达式验证字母数字字符串的长度

时间:2013-07-25 09:47:06

标签: c# .net regex validation alphanumeric

我有以下正则表达式:

^[a-zA-Z0-9]+( [a-zA-Z0-9]+)*$

我正在尝试验证0到10个字符之间的字符串,该字符串不能包含更多行中的两个空格或不能为空。该字符串不能包含任何特殊字符,并且可以不区分大小写,并且可以包含连字符。

如何将输入限制在0-10个字符之间?

我试过

^[a-zA-Z0-9]+( [a-zA-Z0-9]+{0,10})*$

但它不起作用。

3 个答案:

答案 0 :(得分:5)

我会这样做:

^(?!.*  )(?=.*[\w-])[\w -]{1,10}$

这使用负前瞻(?!.* )断言没有两个连续的空格,并且一个肯定的前瞻(?=.*[\w-])断言它至少有一个非空格字符(我假设“空“意味着”只有空格“)。

请注意,如果它不能为“空”,则长度不能为零,因此长度范围必须为1-10,而不是0-10。

如果它是第一个或最后一个字符,那么你就不需要在字符类中转义短划线。

答案 1 :(得分:1)

(?i)([a-z?0-9?\-?]\s?){0,10}

不区分大小写,长度在0到10之间,匹配字母,数字,连字符和单个空格的任意组合。

答案 2 :(得分:-1)

我认为使用范围时没有“+”。

^[a-zA-Z0-9]+( [a-zA-Z0-9]{0,10})*$

另外,你说你接受连字符,但是在这里看不到?

所以

^[a-zA-Z0-9]+( [a-zA-Z0-9\-]{0,10})*$