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

时间:2009-10-30 12:08:34

标签: regex

我正在尝试编写一个只允许使用小写字母和最多10个字符的regular expression。到目前为止我看到的是这样的:

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

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

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

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

6 个答案:

答案 0 :(得分:313)

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

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

选项包括:

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

请参阅regular expression reference

你的表达式在结束大括号之后有一个+,因此错误。

答案 1 :(得分:9)

/^[a-z]{0,10}$/应该有效。 /^[a-z]{1,10}$/如果您想匹配至少一个字符,例如/^[a-z]+$/

答案 2 :(得分:8)

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

答案 3 :(得分:6)

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

答案 4 :(得分:5)

WITH Positions AS(SELECT * FROM (VALUES (3),(6),(9),(12),(15),(18),(21),(24),(27),(30),(33),(36)) AS v(Nr))
SELECT @xml.value(N'(/RECORD/*[sql:column("Positions.Nr")]/text())[1]',N'nvarchar(max)') AS FUEL_TYPE
      ,@xml.value(N'(/RECORD/*[sql:column("Positions.Nr")+1]/text())[1]',N'nvarchar(max)') AS RATE_US
      ,@xml.value(N'(/RECORD/*[sql:column("Positions.Nr")+2]/text())[1]',N'nvarchar(max)') AS RATE_CAN

FROM Positions

使用具有限制

的精确匹配计数给出计数

答案 5 :(得分:0)

pattern: /[\w\W]{1,10}/g

在我的情况下,我使用了这个表达式,它包含了文本中所有可用的字符。