正则表达式验证中的行为

时间:2016-04-15 04:21:52

标签: ruby operator-precedence

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

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

为什么会这样?

1 个答案:

答案 0 :(得分:3)

=的优先级高于and。首先,您已将is_valid_path的结果分配给nil?,结果为true。然后第二个nil?返回false。然后结合false