我有一个非常简单的正则表达式任务,让我感到困惑(当时我还以为我也开始了解它们)。我只想检查一个字符串是否包含11位数字。我用这个正则表达式是/\d{11}/
。我的理解是,如果确实(不多也不少于)11个数字字符(但显然我的理解是错误的),这将产生匹配。为什么这个ruby正则表达式不起作用?
这里是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
因此,虽然我得到一个11位的字符串,并适当不匹配的为10位数的字串适当的比赛,我在12得到一个匹配数字串!我会认为/\d{11,}/
将是这样做的正则表达式。
任何人都可以解释我的误解吗?
太好了,谢谢。我做了推荐的阅读,并意识到一个更好的正则表达式会是/ \ A \ D \ Z \ /但这只是挑剔。 – brad 2011-01-25 10:13:34