2012-05-16 3 views
2

У меня есть текстовое поле, и в нем указано «Телефон:», поскольку стандарт здесь для номера телефона (XXX) -XXX-XXXX Я хотел бы иметь javascript, который автоматически помещает мои номера в этот формат, если он не находится в этот формат, поэтому, если вы набрали 9993334444, тогда он автоматически изменит его на лету, пока я набираю текст (999) -333-4444. Я искал Google для Javascript Phone Regex без успеха, возможно, Regex - это не то, что Я ищу?Как я могу использовать Javascript Regex для телефонных номеров?

+1

Это действительно не тривиально решить! Если пользователь ввел «999», чем вы, вероятно, захотите показать «(999) -» в поле ввода. Если пользователь затем входит в , вы, вероятно, захотите показать «(99» в поле. Другая сложная часть может быть скопирована и вставлена ​​в текст. Мне когда-то пришлось реализовать подобную проблему для клиента, но это было много работы и в конец результата не был ДЕЙСТВИТЕЛЬНО удобным решением. :( – slartidan

+0

Вы также говорите, что никогда не будете использовать это программное обеспечение в локали с различными стандартами для телефонных номеров. Просто позвольте пользователям делать это сами. – Ashe

ответ

2

вы хотите добавить OnKeyUp событие с регулярным выражением, как

this.value = this.value.replace(/^\(?([0-9][0-9][0-9]){1}\)?-?([0-9][0-9][0-9][0-9]){1}-?([0-9][0-9][0-9]){1}$/, '($1)-$2-$3'); 

Выезд http://jsfiddle.net/R8enX/

/ means start/end a regex string 
^ means start of matching string 
$ means end of matching string 
? means 0 or 1 instances (make braces and dashes optional) 
[0-9] means any single digit 
(x){1} tags x as an expression that we can reference in the replacement with a $ sign 

EDIT: понял, что я пропустил цифру на последней группе чисел, jsfiddle будет только (правильно) с 3-мя цифрами в последней группе

+0

Не знаете, что вы имеете в виду тот факт, что jsfiddle будет работать только с 3-мя цифрами в последней группе, потому что я просто попробовал код, и он отлично работал :) Я не знал о событиях onkeyup, я думал, что должен использовать Onclick, чтобы вы научили меня что-то сегодня. Большое спасибо! – user519753

0

Чтобы построить несколько ответов @Andrews, вы можете проверить действительный (местный) номер телефона с помощью этого метода. Если число меньше или больше, чем 10 цифр, он падает обратно в недействительный номер

-

<input type="text" onBlur="localNumber(this.value)"/> 

<div id="output"></div> 

-

<script> 

var localNumber = function(str){ 

    repl = str.replace(/^([0-9]{3})([0-9]{3})([0-9]{4})$/, "($1)-$2-$3"); 
    outp = document.getElementById('output'); 

    if(repl.match(/\W/)) 
    { 
     outp.innerHTML = repl; 
    } 
    else 
    { 
     outp.innerHTML = 'Invalid number for this region'; 
    } 

} 

</script> 
Смежные вопросы