diff --git a/includes/handlers.inc b/includes/handlers.inc
index 2a33d5d..bbc11c7 100644
--- a/includes/handlers.inc
+++ b/includes/handlers.inc
@@ -1149,12 +1149,12 @@ function views_break_phrase($str, &$handler = NULL) {
     return $handler;
   }
 
-  if (preg_match('/^([0-9]+[+ ])+[0-9]+$/', $str)) {
+  if (preg_match('/^\d+[+ ][\d+ ]*\d+$/', $str) && !preg_match('/[+ ]{2,}/', $str)) {
     // The '+' character in a query string may be parsed as ' '.
     $handler->operator = 'or';
     $handler->value = preg_split('/[+ ]/', $str);
   }
-  elseif (preg_match('/^([0-9]+,)*[0-9]+$/', $str)) {
+  elseif (preg_match('/^(\d+,){0,1}[\d,]*\d+$/', $str) && !preg_match('/,{2,}/', $str)) {
     $handler->operator = 'and';
     $handler->value = explode(',', $str);
   }
