Maska telefoniczna Javascript dla pola tekstowego z wyrażeniem regularnym

Używam tej funkcji do maski telefonu i działa prawie idealnie.

function mask(o, f) 
{ 
    v_obj = o; 
    v_fun = f; 
    setTimeout("execmask()", 1) 
};

function execmask() 
{ 
    v_obj.value = v_fun(v_obj.value) 
};

function mphone(v){
    v=v.replace(/\D/g,"");           
    v=v.substring(0, 11);
    v=v.replace(/^(\d{2})(\d)/g,"(OXX$1) $2"); 
    v=v.replace(/(\d)(\d{4})$/,"$1-$2"); 
    return v;
}

Tutaj uruchamiam maskę w polu tekstowym:

<input type="text" id="phone" name="phone" onkeypress="mask(this, mphone);" onblur="mask(this, mphone);" />

Problem polega na tym, że muszę zmienić tę część kodu(OXX 1 USD) dla(0XX $ 1).

Aktualna sytuacja z 9 cyframi:(OXX99) 99999-9999.

Aktualna sytuacja z 8 cyframi:(OXX99) 9999-9999.

Prawidłowe formatowanie, którego potrzebuję z 9 cyframi:(0XX99) 99999-9999

Prawidłowe formatowanie, którego potrzebuję z 8 cyframi:(0XX99) 99999-9999

Ilość 8 lub 9 cyfr jest wyborem użytkownika.

Jeśli zmienię znak „O” na „0”, spowoduje to błąd w masce.

Proszę pomóż!

questionAnswers(2)

yourAnswerToTheQuestion