Regex验证字母数字字符串的长度
本文关键字:字符串 数字字符 数字 验证 Regex | 更新日期: 2023-09-27 18:24:47
我有以下正则表达式:
^[a-zA-Z0-9]+( [a-zA-Z0-9]+)*$
我正在尝试验证一个介于0-10个字符之间的字符串,该字符串不能在一行中包含两个以上的空格,也不能为空。字符串不能包含任何特殊字符,并且可以不区分大小写,还可以包括连字符。
如何将输入限制在0-10个字符之间?
我试过
^[a-zA-Z0-9]+( [a-zA-Z0-9]+{0,10})*$
但它不起作用。
我会这样做:
^(?!.* )(?=.*['w-])['w -]{1,10}$
这使用否定的先行(?!.* )
来断言不存在两个连续的空格,而使用肯定的先行(?=.*['w-])
来断言它至少有一个非空格字符(我假设"空"表示"只有空格")。
请注意,如果不能为"空",则不能为零长度,因此长度范围必须为1-10,而不是0-10。
值得注意的是,如果破折号是第一个或最后一个字符,则不需要转义字符类中的破折号。
(?i)([a-z?0-9?'-?]'s?){0,10}
不区分大小写,长度在0-10之间,匹配字母、数字、连字符和单空格的任何组合。
使用范围时,我认为没有"+"。
^[a-zA-Z0-9]+( [a-zA-Z0-9]{0,10})*$
还有,你说你接受连字符,但没看到这里吗?
所以
^[a-zA-Z0-9]+( [a-zA-Z0-9'-]{0,10})*$