如何为电话号码实现实时Javascript正则表达式?

时间:2012-05-16 11:48:45

标签: javascript regex

我有一个文本框,上面写着“电话:”,电话号码的标准是(XXX)-XXX-XXXX 我想有一个自动将我的数字放入该格式的javascript,如果它不是那种格式,所以如果你输入9993334444然后它会在我输入的时候自动更改它(999)-333-4444我已经浏览了Google的Javascript Phone Regex,但没有成功,也许我正在寻找正则表达式?

2 个答案:

答案 0 :(得分: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

编辑:意识到我错过了最后一组数字的数字,jsfiddle只能在最后一组中使用3位数(正确)

答案 1 :(得分: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>