正则表达式将字符数限制为10


187

我正在尝试写一个 仅允许小写字母和最多10个字符正则表达式。我到目前为止所拥有的看起来像这样:

pattern: /^[a-z]{0,10}+$/ 

这不起作用或无法编译。我有一个工作的,只允许使用小写字母,这是:

pattern: /^[a-z]+$/ 

但是我需要将字符数限制为10个。


4
{}和+做相同的事情(计数),因此它们是多余的,因此是错误的。
PhiLho

1
您应该从/ ^ [az] {0,10} + $ /中删除'+'。应该是/ ^ [az] {0,10} $ /
SO用户

1
请注意,模式可^[a-z]{0,10}+$在某些语言上编译,其中一些著名的语言是Java,Perl(5.10 +),PHP,Ruby(1.9+)。请参阅此页面以获取更多详细信息。
2014年

另请参见通过前瞻性解决方案的通用解决方案:在正则表达式中限制字符长度
Vadzim

Answers:


353

您可以使用花括号来控制出现的次数。例如,这表示0到10:

/^[a-z]{0,10}$/

选项包括:

  • {3}恰好3次出现;
  • {6,}至少发生6次;
  • {2,5} 2至5次出现。

请参阅正则表达式参考

右花括号后的表达式带有+,因此出现错误。


在带有ember的chrome开发工具中,我必须省略开头^以仅匹配名称为1234或的请求5678,并且必须包含$符号
Devin G Rhode

11

/^[a-z]{0,10}$/应该管用。/^[a-z]{1,10}$/如果您想匹配至少一个字符,就像/^[a-z]+$/这样。


9

在字符串的末尾添加贪婪匹配可能是有益的,因此您可以接受大于10的字符串,并且正则表达式将仅返回前10个字符。 /^[a-z0-9]{0,10}$?/


8

这在很大程度上取决于您所使用的程序。不同的程序(EmacsvisedPerl)使用略有不同的正则表达式。在这种情况下,我会说在第一个模式中,应删除最后一个“ +”。


7
grep '^[0-9]\{1,16\}' | wc -l

给出具有完全匹配限制的计数

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.