Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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_Jquery_Html_Regex - Fatal编程技术网

Javascript 自动更正电话格式输入

Javascript 自动更正电话格式输入,javascript,jquery,html,regex,Javascript,Jquery,Html,Regex,我正在尝试用javascript在HTML上自动格式化输入,几乎完成了,我需要的格式是xxx xxx xxxx,但我有这个代码 this.value = this.value.replace(/(\d{3})\-?/g,'$1-'); 正如你所见,它将只是自动格式化xxx xxx xxx xxx,但我需要在最后4位数字 有什么建议吗?帮助您解决问题的示例代码: var phone = '(555) 666-7777'; // First clean your input phone = ph

我正在尝试用javascript在HTML上自动格式化输入,几乎完成了,我需要的格式是xxx xxx xxxx,但我有这个代码

this.value = this.value.replace(/(\d{3})\-?/g,'$1-');
正如你所见,它将只是自动格式化xxx xxx xxx xxx,但我需要在最后4位数字


有什么建议吗?

帮助您解决问题的示例代码:

var phone = '(555) 666-7777';

// First clean your input
phone = phone.replace(/[^\d]/g, '');
// Check the length of the phone
if(phone.length == 10){
    // Now we can format the phone
    phone = phone.substring(0,3)+'-'+phone.substring(3,6)+'-'+phone.substring(6, 10);
    // Optionally
    //phone = phone.replace(/(\d{3})(\d{3})/, '$1-$2-');
}
else {
    // whatever you want to tell the user
}

帮助您解决问题的示例代码:

var phone = '(555) 666-7777';

// First clean your input
phone = phone.replace(/[^\d]/g, '');
// Check the length of the phone
if(phone.length == 10){
    // Now we can format the phone
    phone = phone.substring(0,3)+'-'+phone.substring(3,6)+'-'+phone.substring(6, 10);
    // Optionally
    //phone = phone.replace(/(\d{3})(\d{3})/, '$1-$2-');
}
else {
    // whatever you want to tell the user
}
请尝试此regexp:

'1234567890'.replace(/(\d{3}(?!\d?$))\-?/g, '$1-'); // 123-456-7890
角色\d?$是一个消极的前瞻。它只允许正则表达式匹配三个数字,前提是它们后面不跟第四个数字,但不一定跟第四个数字?在字符串$的末尾

因此,它与789组不匹配,因为后面跟0$。

请尝试以下正则表达式:

'1234567890'.replace(/(\d{3}(?!\d?$))\-?/g, '$1-'); // 123-456-7890
角色\d?$是一个消极的前瞻。它只允许正则表达式匹配三个数字,前提是它们后面不跟第四个数字,但不一定跟第四个数字?在字符串$的末尾


所以它将不匹配789组,因为它后面跟0$。

或者简单地说:.replace/\d{3}\d{3}\d{4}\?/g,'$1-$2-$3'

或简单地说:.replace/\d{3}\d{3}\d{4}\?/g,'1-$2-$3'

上面的replace regex中似乎有一个bug。输入一个10位数字,您会看到它的格式正确,例如123 456-7890。然后,选择字段的内容,双击或三次单击该字段并重新键入值。您将看到前两个数字被转置。因此,如果您输入1 2 3,您将看到2 1 3…

上面的replace regex中似乎有一个bug。输入一个10位数字,您会看到它的格式正确,例如123 456-7890。然后,选择字段的内容,双击或三次单击该字段并重新键入值。您将看到前两个数字被转置。所以如果你输入1233,你会看到213…

A一些,这就是我需要的一些,这就是我需要的事实,非常简单的解决方案!事实上,这是一个非常简单的解决方案!您好,欢迎来到S-O。这应该是对问题的评论,因为它实际上不是答案。您好,欢迎来到S-O。这应该是对问题的评论,因为它实际上不是答案。