我想用正则表达式匹配5到20个字符。 我尝试使用下面的正则表达式进行检查。
/^[a-zA-Z][\w]{5,20}$/
这是有效的,但长度问题与6到21个字符匹配。
(^[a-zA-Z][\w]){4,20}$
我也试过这个,但它不起作用。
请任何人帮我匹配正则表达式的确切长度。
答案 0 :(得分:2)
这是因为您的捕获组期待两个字符:
[a-zA-Z]
和[\w]
,这是两个字母。
所以你的第一次尝试实际上是这样做的:
只捕获一个字符,并将其迭代5-20次。
你有没有尝试过:
^([a-zA-Z]{5,20})$
?
要么
^(\w{5,20})$
?
你几乎就在那里,你只需要制作单个范围的字符(方括号中)而不是两个字符。
答案 1 :(得分:2)
量词仅适用于[\ w]。因此,这需要一个字母字符,然后是5-20个空白字符。
我假设您想要5-20个字符,可以是字母a-z或空格。您需要将它们组合在方括号中,然后应用量词:
^[a-zA-Z\W]{5,20}$
所以,据我所知,你想要一个5-20个字符的字符串,以字母开头,然后只有字母和数字。你会这样写:
^[a-zA-Z][a-zA-Z0-9]{4,19}$
首先要求一个字母,然后是4到19个字母或数字。
BTW:https://regex101.com/是测试正则表达式并获得解释的好网站。
答案 2 :(得分:2)
/^[a-zA-Z][\w]{5,20}$/
表示:
总计最多6到21个字符。
我想你想要/^[a-zA-Z][\w]{4,19}$/
:
总计最多5到20个字符。