Regex dla prawidłowego numeru z opcjonalnymi przecinkami i kropkami

Próbuję tylko zezwolić na cyfry i specjalne znaki, takie jak „.” i „,” dozwolone w moim łańcuchu tekstowym. za to wypróbowałem następujący kod

var pattern = /[A-Za-z]/g;
var nospecial=/[\(#\$\%_+~=*!|\":<>[\]{}`\\)';@&?$]/g;
if (!ev.ctrlKey && charCode!=9 && charCode!=8 && charCode!=36 && charCode!=37 && charCode!=38 && (charCode!=39 || (charCode==39 && text=="'")) && charCode!=40) {
    console.log(text);
    if (!pattern.test(text) && !nospecial.test(text)) {
        console.log('if');
        return true;
    } else {
        console.log('else');
        return false;
    }
}

ale nie uzyskuję pożądanego wyjścia. powiedz mi, gdzie się mylę.

questionAnswers(5)

yourAnswerToTheQuestion