这个正则表达式模式描述了什么:“。{5,} +”

时间:2010-09-11 18:23:31

标签: regex

我正在处理的应用程序中的一个HTML输入字段正在使用以下正则表达式模式进行验证:

.{5,}+

这是什么检查?

正在使用此模式检查其他字段,我也不明白:

.+

4 个答案:

答案 0 :(得分:18)

我们可以将您的模式分为三个部分:

dot是一个通配符,它​​匹配任何字符(默认情况下除了换行符,除非设置了/s modifier)。

{5,}在点上指定repetition。它表示点必须至少匹配5次。如果逗号后面有一个数字,那么点必须在5和那个次数之间匹配,但由于没有数字,它可以匹配无限次。

在您的第一个模式中,+possessive quantifier(有关+在不同情况下的不同之处,请参见下文)。它告诉正则表达式引擎一旦满足前一个条件(即.{5,}),它就不应该尝试回溯。


你的第二种模式更简单。点仍然意味着与上面相同(作为通配符)。但是,这里+具有不同的含义,并且是重复运算符,这意味着点必须匹配1次或更多次(也可以表示为.{1,},如上所述。 / p>

如您所见,+具有不同的含义,具体取决于上下文。当单独使用时,它是一个重复运算符。但是当它跟随不同的重复运算符(*?+{...})时,它就变成了占有量词。

答案 1 :(得分:4)

+表示另一个量词({5,})表示possessive match,即一旦找到匹配,*不会回溯**。

例如,模式.{5,}x将匹配abcdex

  1. .{5,}匹配abcdex
  2. x没有任何匹配。
  3. 所以回溯.{5,}并让它与abcde匹配。
  4. 现在x与最后x匹配。
  5. 但是.{5,}+x 匹配abcdex

    1. .{5,}+匹配abcdex
    2. x没有任何匹配。
    3. 无法回溯.{5,}+。我们必须到此为止。
    4. *:即使模式无法回溯,匹配的字符串仍然可以作为一个整体删除。例如,a?.{5,}x将匹配{a?a.{5,}+bcdexx→无匹配},然后删除整个.{5,}+a并重新启动{a?.{5,}+abcdexx→无匹配}。因此,我们也可以说+使量词“原子”。


      另一方面,+仅表示{1,},即匹配一次或多次。

答案 2 :(得分:3)

任何角色,5次或更多次。

  • “”。指除换行符之外的任何字符。
  • {m,n}定义有界区间。 “m”是分钟。 “n”是最大值。如果未定义n,则为无限制。
  • “+”表示占有欲。

答案 3 :(得分:3)

.{5,}+表示

  1. Match any single character that is not a line break character
    1. Between 5 and unlimited times; as many times as possible, without giving back (possessive)
  2. .+是相同的,但它匹配1和无限次,根据需要回馈(贪婪)。

    正如我之前多次提到的,我是RegexBuddy的忠实粉丝。它的“创建”模式非常适合解构正则表达式。