 			{
 				return ColumnUtils.deriveStringFromNumber(column, value);
 			}
-			else
+			else if (Range.isRange(value))
 			{
 				var range:Range = new Range(value);
 				var leftBracket:String = range.minInclusive ? "[" : "(";
 				var rightBracket:String = range.maxInclusive ? "]" : ")";
 				return leftBracket + stringifyValue(range.min) + ", " + stringifyValue(range.max) + rightBracket;
 			}
+			else if (isRegExp(value))
+			{
+				return new RegExp(value[REGEXP]).toString();
+			}
+			
+			return null;
+		}
+		
+		private static function isRegExp(obj:Object):Boolean
+		{
+			return obj != null && typeof obj == 'object' && obj.hasOwnProperty(REGEXP);
 		}
 		
 		private var _deprecatedRangeState:Object;

		private var _stringLookup:Object;
		private var _numberLookup:Object;
		private var _ranges:Array;
		private var _keyType:String;
		private var _keyLookup:Dictionary = new Dictionary(true);
		


internal class Range
{
	public static function isRange(obj:Object):Boolean
	{
		var count:int = 0;
		var prop:String;
		
		for each (prop in [MIN, MIN_INCLUSIVE, MIN_EXCLUSIVE])
			if (obj.hasOwnProperty(prop))
				count++;
		if (!count)
			return false;
		
		count = 0;
		for each (prop in [MAX, MAX_INCLUSIVE, MAX_EXCLUSIVE])
			if (obj.hasOwnProperty(prop))
				count++;
		
		return count > 0;
	}
	
	public static const MIN:String = 'min';
	public static const MIN_INCLUSIVE:String = 'minInclusive';
	public static const MIN_EXCLUSIVE:String = 'minExclusive';
