我有以下正则表达式:
^[a-zA-Z0-9]+( [a-zA-Z0-9]+)*$
我正在尝试验证0到10个字符之间的字符串,该字符串不能包含更多行中的两个空格或不能为空。该字符串不能包含任何特殊字符,并且可以不区分大小写,并且可以包含连字符。
如何将输入限制在0-10个字符之间?
我试过
^[a-zA-Z0-9]+( [a-zA-Z0-9]+{0,10})*$
但它不起作用。
答案 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})*$