2016-04-15 15 views
0

Ich habe versucht, einen Pfad zu validieren, und wenn der Pfad nicht mit der Regex übereinstimmt, dann habe ich eine Logik angewendet. Ich bekomme das erwartete Ergebnis in der folgenden:Verhalten bei der Regex-Validierung

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

Aber wenn ich die Regex Validierung in einer Variablen speichern:

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

und rufen Sie für das Ergebnis der is_valid_path, ich true:

is_valid_path # => true 

Warum passiert das?

Antwort

3

= hat stärkeren Vorrang als and. Zuerst haben Sie is_valid_path das Ergebnis der ersten nil? zugewiesen, was sich als true herausstellte. Dann die zweite nil? zurückgegeben false. Die Konjunktion wurde dann false.

+1

sollten Sie bei booleschen Ausdrücken bei '&&' und '||' bleiben. 'und' ist nicht dasselbe wie' && '. – user1902135

Verwandte Themen