I tried your code, for me it work correctly.
What platform do you use ?
var pattern:Vector.<String> = new <String>["A10", "A2", "A5","A8", "A3", "A9","A1", "A4", "A7","A6"];
var card:Vector.<String> = pattern.slice();
card.sort(comparePatterns);
trace( card );
private function comparePatterns(a:String, b:String):Number {
var num_a:Number = Number(a.substr(1, 2));
var num_b:Number = Number(b.substr(1, 2));
// return -1, 0, or 1 depending on comparison
if (num_a < num_b) return (-1);
if (num_a == num_b) return (0);
if (num_a > num_b) return (1);
return 0;
}