这个正则表达式是什么/。{2,} /是什么意思?

时间:2014-07-07 06:05:32

标签: regex

即使在搜索正则表达式的例子后,我也无法弄清楚这一点。 有人能告诉我这个表达意味着什么吗?

 /.{2,}/

感谢您的帮助

3 个答案:

答案 0 :(得分:4)

贪婪地匹配两个或多个不是行分隔符的字符,但是......

取决于您的引擎:

  • 在PCRE,C#,Python,Ruby中,.匹配任何不是\n的字符...请注意,因为这包括回车\r
  • 在JavaScript和Java中,.匹配任何不是换行符的字符(\n\r,段落分隔符)......

{2,}贪婪(它会尽可能多地占用字符数)

请注意,{2,}量词是"贪婪":.{2,}将匹配尽可能多的字符,并且只会"返回字符" (回溯)如有必要,例如允许下一个令牌(如果有的话)匹配。

DOTALL模式

dotall模式下(您在各种引擎中以不同方式启用),.也会匹配行分隔符。

  • 在大多数引擎中,此模式由s标志
  • 激活
  • 在Ruby中,它由m标志
  • 激活

答案 1 :(得分:3)

.匹配除换行符之外的任何字符。引自MDN's RegExp page

  

(小数点)匹配除换行符之外的任何单个字符。

{2,}表示两次或更多次。

因此,整个表达式意味着“匹配任何长度大于或等于2的字符集”

答案 2 :(得分:2)

{ , } 是重复量词。它用于指定 任何令牌可以在成功匹配时重复多少次。

引自Limiting Repetition :( HERE

语法为{min,max},其中min为零或表示最小匹配数的正整数,max为等于或大于min的整数,表示最大匹配数。 如果逗号存在但省略了max,则最大匹配数为无限
因此,{2,}将表示前一个字符的 2或更多

.表示任何字符(line separator除外),forward-slashes表示正则表达式的开头和结尾。


更新:

So far I have this regex for characters allowed. /^[a-zA-Z0-9'.,\s\-&()]*$/ Do I need to keep /.{2,}/ in the field?

{a,b}指定匹配字符串的最小值(通过 a )和最大值(通过 b )。因此,如果您需要为 letters, numbers, commas,and periods 指定最小和/或最大限制,则可以在 正则表达式 >群组 (例如[ ])并在此群组后面放置{ a, b},如下所示:/^[a-z]{2,200}$/。这将匹配一串 2到200个小写字母。

至于您的letters, numbers, commas,and periods,在正则表达式/^[a-zA-Z0-9'.,\s\-&()]*$/中,您需要转义.并将*替换为{2,max-limit},如下所示:
/^[a-zA-Z0-9'\.,\s\-&()]{2,20}$/

- > DEMO

相关问题