внизу пример, но он не доделан и неверен, когда я понял, что не по тому пути пошел, мой интерес пропал))
<input type="text" id="tel" value="+7-(___)-___-__-__" onkeyup="testtel(this);"/>
<script>
function testtel(el){
var str=el.value.split(/[^\d\+-_\(\)]/).join(''); // or replace
var regexi=/^\+7-\(([\d_]{0,4})\)-([\d_]{0,4})-([\d_]{0,3})-([\d_]{0,3})$/;
var result=regexi.exec(str);
var n;
if(!result){
var regexfif=/7?([\d_]{3})([\d_]{3})([\d_]{2})([\d_]{2})/;
result=regexfif.exec(str.split(/[-\)\(]/).join(''));
if(!result){
el.value='+7-(___)-___-__-__';
return;
}else{
str='+7-('+result[1]+')-'+result[2]+'-'+result[3]+'-'+result[4];
}
}
result=regexi.exec(str);
var didreg=/^\d+$/;
for(var i=1;i<5;i++){
switch (i){
case 1:
n=3;
break;
case 2:
n=3;
break;
case 3:
n=2;
break;
case 4:
n=2;
break;
}
while(result[i].length!=n){
if(result[i].length>n){
if(didreg.test(result[i])){
result[i+1]=''+result[i][result[i].length-1]+result[i+1];
result[i]=result[i].substring(0,result[i].length-1);
}
else result[i]=result[i].replace(/_/,'');
}
else result[i]=result[1]+'_';
}
}
if(document.selection){ // Для IE
var s=document.selection.createRange();
el.value='+7-('+result[1]+')-'+result[2]+'-'+result[3]+'-'+result[4];
s.select();
}else{ // Opera, FireFox, Chrome
var start=el.selectionStart;
var end=el.selectionEnd;
el.value='+7-('+result[1]+')-'+result[2]+'-'+result[3]+'-'+result[4];
el.setSelectionRange(start,end);
}
}
</script>
по факту нужно просто запретить на поле ввод символов кроме цифр, потом распаршивать на цифры и подставлять шаблон к этим номерам, т.е верхняя часть функции отпадает, потом просто позицию курсора выставлять верно )
А с урлом там вообще ерунда, проверка на начало ссылки, чтобы была хттп
Но обычно так не делается )) А просто делается валидация и в случае неверного ввода всплывает подсказка мол введите так а не эдак.