C# 用于验证字母数字字符串长度的正则表达式

C# 用于验证字母数字字符串长度的正则表达式,c#,.net,regex,validation,alphanumeric,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})*$ 但是它不起作用。我认为使用range时没有“+” ^[a-zA-Z0-9]+( [a-zA-Z0-9]{0,10})*$ 还有,你说你接受

我有以下正则表达式:

^[a-zA-Z0-9]+( [a-zA-Z0-9]+)*$
我正在尝试验证0-10个字符之间的字符串,该字符串不能超过一行中的两个空格,也不能为空。字符串不能包含任何特殊字符,可以不区分大小写,也可以包含连字符

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

我试过了

^[a-zA-Z0-9]+( [a-zA-Z0-9]+{0,10})*$
但是它不起作用。

我认为使用range时没有“+”

^[a-zA-Z0-9]+( [a-zA-Z0-9]{0,10})*$
还有,你说你接受连字符,但在这里看不到

所以


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

我会这样做:

^(?!.*  )(?=.*[\w-])[\w -]{1,10}$
它使用一个负的前瞻
(?!*)
来断言没有两个连续的空格,而使用一个正的前瞻
(?=.[\w-])
来断言它至少有一个非空格字符(我假设“空”表示“只有空格”)

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


值得注意的是,如果字符是第一个或最后一个字符,则不需要在字符类中转义破折号。

如果(str.Length>10)
?不要尝试用一个正则表达式完成所有操作。。。那很可能会把你逼上绝路。对于长度,可以使用.NET framework提供的
.length
属性。我建议您使用多个正则表达式来执行更小、更简单的任务。这与字符串
AAA
匹配。输入在一行中不能包含两个以上的空格。此匹配双空格。如上所述,此匹配双空格。但是几乎没有:
(?i)\w([a-z?0-9?\-?]\s?{0,10}
添加了
\w
来解释重音字符,因为我相信这些字符是允许的。您确定这匹配我在一些测试人员中测试过的两个空格,并且不会匹配多个空格吗?你想要一个指向测试者的链接吗?@Srb1313711 Try
test test
用双空格表示一行两个或整个字符串两个吗?空检查可能会被删除,因为我们在控件上有一个必需的字段验证器OK,但这个问题确实需要regex断言至少有一个非空。万一以后有人来用这个答案,他们可能没有额外的检查。是的,那是我的错。添加
\w
是否也允许使用拉丁文重音字符?
\w
包括所有“字母”、“数字”和下划线字符。“字母”是指任何unicode“字母”(包括重音、希腊语、阿拉伯语和其他字母)。“数字”包括阿拉伯语,也包括汉语“数字”。太好了。最后使用:
^(?i)(?!*)(?=.[a-z0-9-])[\wa-z0-9-]{1,10}$
(?i)([a-z?0-9?\-?]\s?){0,10}
^(?!.*  )(?=.*[\w-])[\w -]{1,10}$