2016-04-15 11 views
0

パスを検証しようとしましたが、パスが正規表現と一致しない場合はロジックを適用しました。私は、次の中で期待される結果が得られます。正規表現検証の動作

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 

どうしてですか?

答えて

3

=は、andよりも強い優先順位を持ちます。まず、is_valid_pathに最初のnil?の結果を割り当てました。これはtrueです。次に、nil?が返され、falseが返されます。結合詞は、falseとなった。

+1

ブール式の場合は '&&'と '||'を使用してください。 'と'は '&&'と同じではありません。 – user1902135