Me ha parecido didáctico el ejemplo para plantearlo con expresiones regulares.
Otra solución válida también:
Código PHP:
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Formato numero de telefono</title>
<script language="javascript">
function cambialo(elemento){
var valorAntes = elemento.value;
elemento.value = valorAntes.replace( /^(d{3})(d{4})$/, "$1-$2" );
var valorDespues = elemento.value;
if( valorAntes==valorDespues )
alert("Debes introducir siete digitos seguidos en la caja.\nEJEMPLO: 1234567");
}
</script>
</head>
<body>
<input type="text" name="numero" onBlur="cambialo(this);">
</body>
</html>
La expresión regular debe ser:
/^(\d{3})(\d{4})$/
La cual trata de encontrar el principio de la cadena (^); después tres digitos (\d{3}) que los agrupa metidos en un paréntesis para luego recordarlos y utilizarlos como $1; y por último cuatro dígitos seguidos (\d{4}) que metemos también en un paréntesis para utilizarlos luego como $2.
Luego de esto, se sustituye la incidencia por "$1-$2" que devolverá los tres dígitos, un guión, y los cuatro dígitos.
Poco a poco conseguiré que alguien utilice las expresiones regulares jeje.
Un saludo!