Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实现电话号码的实时Javascript正则表达式?_Javascript_Regex - Fatal编程技术网

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

如何实现电话号码的实时Javascript正则表达式?,javascript,regex,Javascript,Regex,我有一个文本框,上面写着“电话:”因为这里的电话号码标准是(XXX)-XXX-XXXX 我想有一个javascript,如果不是那种格式,它会自动将我的号码转换成那种格式,所以如果你键入9993334444,那么它会在我键入(999)-333-4444时自动更改,我在谷歌搜索javascript手机Regex,但没有成功,也许正则表达式不是我想要的?您想添加一个带有类似正则表达式的onkeyup事件吗 this.value = this.value.replace(/^\(?([0-9][0-9

我有一个文本框,上面写着“电话:”因为这里的电话号码标准是(XXX)-XXX-XXXX
我想有一个javascript,如果不是那种格式,它会自动将我的号码转换成那种格式,所以如果你键入9993334444,那么它会在我键入(999)-333-4444时自动更改,我在谷歌搜索javascript手机Regex,但没有成功,也许正则表达式不是我想要的?

您想添加一个带有类似正则表达式的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');
退房


编辑:意识到我错过了最后一组数字中的一个数字,JSFIDLE将只在最后一组中的3个数字(正常)工作

要在@Andrews answer上构建,您可以通过此方法检查有效的(本地)电话号码。如果该数字短于或大于10位,则会重新折叠为无效数字

-


-


var localNumber=函数(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;
}
其他的
{
outp.innerHTML='此区域的编号无效';
}
}

解决这个问题真的不是件小事!如果用户输入了“999”,则您可能希望在输入字段中显示“(999)-”。如果用户随后输入,您可能希望在字段中显示“(99)”。另一个棘手的部分可能是复制和粘贴文本。我曾经为客户端实现过类似的问题,但这需要做很多工作,最终结果并不是一个真正方便的解决方案(你还说,你永远不会在电话号码标准不同的地区使用此软件。让用户自己做就行了。不确定你说的JSFIDLE只能在最后一组中使用3位数字时正常工作是什么意思,因为我刚刚试过代码,它工作得很好:)我不知道onkeyup事件,我想我必须使用Onclick,所以你今天教了我一些东西。非常感谢!
/ 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
<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>