我有以下正则表达式:
^[a-zA-Z_][\-_a-zA-Z0-9]*
我需要将其长度限制为39个字符。我尝试了以下方法,但它没有起作用:
^[a-zA-Z_][\-_a-zA-Z0-9]*{,38}
我有以下正则表达式:
^[a-zA-Z_][\-_a-zA-Z0-9]*
我需要将其长度限制为39个字符。我尝试了以下方法,但它没有起作用:
^[a-zA-Z_][\-_a-zA-Z0-9]*{,38}
您只需要使用限定符{0,38}
和字符串结束锚点$
:
^[a-zA-Z_][-_a-zA-Z0-9]{0,38}$
^^^^^ ^
{min,max}
,其中max
参数是可选的,但最小值应该存在。没有$
,你可以在一个更长的字符串中匹配39个第一个字符。/i
修饰符进一步缩短正则表达式:/^[a-z_][-_a-z0-9]{0,38}$/i
/^[a-z_][-\w]{0,38}$/i
该正则表达式匹配:使用这个正则表达式
(^[a-zA-Z_][-_a-zA-Z0-9]){0,39}$
,限制了39个字符,是否可行?
(^[a-zA-Z_][-_a-zA-Z0-9]){0,39}
- 0到39个序列...
^
- 字符串开头[a-zA-Z_]
- 指定范围内的单个字符[-_a-zA-Z0-9]
- 指定范围内的单个字符$
- 字符串结尾A-
的2个字符字符串。^
匹配字符串开头,然后使用[a-zA-Z_]
将W
与o
与[-_a-zA-Z0-9]
匹配。然后该组结束,这等于仅匹配该组一次。由于我们可以匹配更多的序列,因此正则表达式尝试使用^
将r
与其匹配。它失败了。因此,重新尝试下一个位置并以相同的方式失败,因为d
不是^
(字符串开头)。通过这种方式,字符串末尾被匹配,因为有0个^[a-zA-Z_][-_a-zA-Z0-9]
出现,并且有字符串结尾$
。(^[a-zA-Z_][-_a-zA-Z0-9]){0,39}$
也不会有问题吧?它限制了39个字符。 - Max Koretskyi^[a-zA-Z_][\-_a-zA-Z0-9]{0,38}$
[0,38]
表示匹配 [\-_a-zA-Z0-9]
字符的实例数可以是 0 到 38。
limitLength: function(element, lengthOf){
var fieldLength = element.value.length;
if(fieldLength <= lengthOf){
return true;
} else {
var str = element.value;
str = str.substring(0, str.length - 1);
element.value = str;
}
}
使用方法:
<input type="text" onInput="my.namespace.limitLength(this,39)">
[_a-zA-Z0-9]
与\w
具有相同的覆盖范围,因此[\-_a-zA-Z0-9]
可以替换为[-\w]
。 - sp00m<input>
上,请使用maxlength
属性;如果这是字符串,您可以使用.length
属性。 - Tushar