我有一个非常简单的正则表达式任务,让我感到困惑(当我以为我开始得到它们的悬念时).我只想检查字符串是否包含11位数字.我用过的正则表达式是/\d{11}/.我的理解是,如果有完全(不多于也不少于)11个数字字符,这将给出匹配(但显然我的理解是错误的).
以下是irb中发生的情况:
ruby-1.9.2-p136 :018 > "33333333333" =~ /\d{11}/
=> 0
ruby-1.9.2-p136 :019 > "3333333333" =~ /\d{11}/
=> nil
ruby-1.9.2-p136 :020 > "333333333333" =~ /\d{11}/
=> 0
Run Code Online (Sandbox Code Playgroud)
因此,当我得到一个11位数字符串的适当匹配和10位数字符串的适当不匹配时,我得到12位数字符串的匹配!我原本以为/\d{11,}/这将是正则表达式.
任何人都可以解释我的误解吗?
没有锚点,"不多也不少"的假设是不正确的.
/\d{5}/
Run Code Online (Sandbox Code Playgroud)
火柴
foo12345bar
^
+---here
Run Code Online (Sandbox Code Playgroud)
和
s123456yargh13337
^^ ^
|+---here |
+----here |
here--+
Run Code Online (Sandbox Code Playgroud)
所以,改为使用:
/^\d{5}$/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |