首页 > 解决方案 > 未定义的方法“匹配?” 为真:TrueClass (NoMethodError)

问题描述

我正在尝试从(100..1000)范围内返回符合以下条件的值列表/数组:

  1. 3位数值
  2. 每个值中的所有数字都是唯一的。
$global_range = Array (100..999)
$fun = []

def listOfFunPossibilities
    # FUN values should meet the criteria below:
    # 1. 3 digit value
    # 2. All are unique

    $global_range.each do |i|
       if (!(/([0-9]).*?\1/)).match?(i)
           $fun.push(i)
       end
    end
    return $fun
end

listOfFunPossibilities()

标签: regexrubyalgorithm

解决方案


!您过早地应用否定:

if (!(/([0-9]).*?\1/)).match?(i)

所以你首先否定一个正则表达式(出于某种原因这是真的)然后你尝试match调用true价值

改用:

if !(/([0-9]).*?\1/.match?(i))

甚至

if !/([0-9]).*?\1/.match?(i)

推荐阅读