正则表达式验证中的行为

Behaviour in regex validation

我尝试验证路径,如果路径与正则表达式不匹配,那么我应用逻辑。我得到以下预期结果:

path = 'banner/gwd_preview_/index.html'
/^__MACOSX/.match(path).nil? and /gwd_preview_/.match(path).nil?
# => false

但是当我将正则表达式验证存储在变量中时:

is_valid_path = /^__MACOSX/.match(path).nil? and gwd_preview_/.match(path).nil?
# => false

并调用 is_valid_path 的结果,我得到 true:

is_valid_path # => true

为什么会这样?

= 的优先级高于 and。首先,您将第一个 nil? 的结果分配给 is_valid_path,结果是 true。然后第二个 nil? 返回 false。连词,则变成了false.