diff --git a/src/Microsoft.ML/Data/TextLoader.cs b/src/Microsoft.ML/Data/TextLoader.cs
index 3c8550ef09..2df8b8a23a 100644
--- a/src/Microsoft.ML/Data/TextLoader.cs
+++ b/src/Microsoft.ML/Data/TextLoader.cs
@@ -43,7 +43,7 @@ public TextLoaderRange(int min, int max)
         {
 
             Contracts.CheckParam(min >= 0, nameof(min), "Cannot be a negative number.");
-            Contracts.CheckParam(max >= min, nameof(max), "Cannot be less than " + nameof(min) +".");
+            Contracts.CheckParam(max >= min, nameof(max), "Cannot be less than " + nameof(min) + ".");
 
             Min = min;
             Max = max;
@@ -84,8 +84,8 @@ public TextLoader CreateFrom<TInput>(bool useHeader = false,
                         $"Valid characters are 0-9, *, - and ~");
 
                 var name = mappingAttr.Name ?? field.Name;
-                if (name.Any(c => !Char.IsLetterOrDigit(c)))
-                    throw Contracts.Except($"{name} is not alphanumeric.");
+                if (Regex.Match(name, @"^[a-zA-Z_@]\w*$").Success)
+                    throw Contracts.Except($"{name} contains invalid characters as a column name. ");
 
                 Runtime.Data.TextLoader.Range[] sources;
                 if (!Runtime.Data.TextLoader.Column.TryParseSourceEx(mappingAttr.Ordinal, out sources))