@register.filter def regex_comma_number(value,arg): import re __test__ = {} re_digits_nondigits = re.compile(r'\d+|\D+') parts = re_digits_nondigits.findall(arg % (value,)) for i in xrange(len(parts)): s = parts[i] if s.isdigit(): r = [] for j, c in enumerate(reversed(s)): if j and (not (j % 3)): r.insert(0, ',') r.insert(0, c) parts[i] = ''.join(r) break return ''.join(parts)