2013-07-15 16 views
12

Ho bisogno di regolare espresso per il formato numero di telefono degli Stati Uniti. Voglio sostituire la stringa del numero di telefono in sotto il formato di stringa numero di telefono degli Stati Uniti in JavaScript.Maschera stringa di numero di telefono degli Stati Uniti con JavaScript

var number = "4031234789"; 

E voglio mascherare in seguito formato: -

number = number.mask('(000) 000-0000'); 

Qualcuno mi può mostrare un'espressione regolare per quella in JavaScript?

+0

possibile duplicato di [Come posso mascherare un input HTML usando javacript?] (Http://stackoverflow.com/questions/7665792/how-can-i-mask-an-html-input-using-javacript) – mplungjan

+0

Ci sono tutte queste risposte che le persone ti hanno dato su [la tua altra domanda] (http://stackoverflow.com/questions/17650197/mask-javascript-variable-value). – elclanrs

risposta

2

È possibile utilizzare espressioni regolari e poi concatenare a f orm la tua stringa.

var USNumber = "4031234789".match(/(\d{3})(\d{3})(\d{4})/);<br/> 
USNumber = "(" + USNumber[1] + ") " + USNumber[2] + "-" + USNumber[3]; 
39

Questa risposta presuppone che si desideri il seguente formato: (000) 000-0000 (come indica l'OP).

Ci sono diversi modi diversi per implementare questo, ma qui ci sono un paio di approcci diversi:


Se si vuole mascherare semplicemente il numero sull'evento blur (quando il campo perde focus), allora si potrebbe utilizzare il seguente:

document.getElementById('phone').addEventListener('blur', function (e) { 
 
    var x = e.target.value.replace(/\D/g, '').match(/(\d{3})(\d{3})(\d{4})/); 
 
    e.target.value = '(' + x[1] + ') ' + x[2] + '-' + x[3]; 
 
});
<p>Masked on the blur event (remove focus).</p> 
 
<input type="text" id="phone" placeholder="(555) 555-5555"/>


In alternativa, se si preferisce mascherare il numero mentre digitazione, è possibile ascoltare l'evento input e quindi condizionato mascherare il numero in base alla partita regex:

document.getElementById('phone').addEventListener('input', function (e) { 
 
    var x = e.target.value.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/); 
 
    e.target.value = !x[2] ? x[1] : '(' + x[1] + ') ' + x[2] + (x[3] ? '-' + x[3] : ''); 
 
});
<input type="text" id="phone" placeholder="(555) 555-5555"/>

+1

Funziona alla grande! Sono stato in grado di adattarlo facilmente per mascherare un codice postale straniero. –

+1

Cercavo esattamente questo tipo di funzione semplice. La maggior parte erano gonfi e non funzionavano bene. Corteggiare! – mix3d

+0

Non funziona in modalità compatibilità su IE11 :(ma funziona magnificamente quando la modalità di compatibilità è disattivata – LeSteelBox