正则表达式几个块确切的长度

时间:2016-01-30 15:59:20

标签: regex

我想用正则表达式匹配5到20个字符。 我尝试使用下面的正则表达式进行检查。

/^[a-zA-Z][\w]{5,20}$/

这是有效的,但长度问题与6到21个字符匹配。

(^[a-zA-Z][\w]){4,20}$

我也试过这个,但它不起作用。

请任何人帮我匹配正则表达式的确切长度。

3 个答案:

答案 0 :(得分:2)

这是因为您的捕获组期待两个字符: [a-zA-Z][\w],这是两个字母。

所以你的第一次尝试实际上是这样做的:

  • 匹配[a-zA-Z]一次
  • 匹配[\ w]一次
  • 匹配之前的比赛5 - 20次
  • 不可避免地,你总是有比预期更多的比赛

只捕获一个字符,并将其迭代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}$/表示:

  • 一个字母从a到z的大写或小写
  • 5至20个字符

总计最多6到21个字符。

我想你想要/^[a-zA-Z][\w]{4,19}$/

  • 一个字母从a到z的大写或小写
  • 4到19个字符

总计最多5到20个字符。