Полез править и вспомнил, почему запятая экранирована. Там просто один на все нумеры метод, и вместо запятой, может быть точка, которая имеет особое значение в регах.
$dec=$data['decimals'];
'pattern'=>'^[-+]?[0-9\s]+(\\'.NUM_DEC_MARK.'[0-9]{0,'.$dec.'})?$',
То есть NUM_DEC_MARK может быть запятой, точкой и чем угодно, а $dec может быть от 0 до 9 скажем (надо смотреть ману по mySQL), то есть в decimals лежит количество знаков за запятой числа. Для целых там 0, поэтому получается {0,0}
Помогите, сами мы не местные, как нарисовать правильный паттерн для проверки всех чисел от целых до плавающих со знаком и разделителем запятой или точкой так, чтобы бразуер был щаслив.