Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 带有jquery&;的电话号码格式;正则表达式_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 带有jquery&;的电话号码格式;正则表达式

Javascript 带有jquery&;的电话号码格式;正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我需要验证并将任何输入val转换为电话号码格式,即 输入er+f375g25123435s67我需要转换成+375 25 1234567 .. keyup: function(){ newval = $(this).val().replace(/(\D+|\+)/g, ''); newval = newval.replace(/\d(?=(?:\d{3})+(?!\d))/g, '$& '); $(this).val(newval); } .. 这是另一个代码,我需要修改它。以删除

我需要验证并将任何输入val转换为电话号码格式,即

输入er+f375g25123435s67我需要转换成+375 25 1234567

..

keyup: function(){
newval = $(this).val().replace(/(\D+|\+)/g, '');
newval = newval.replace(/\d(?=(?:\d{3})+(?!\d))/g, '$& ');
$(this).val(newval);
}

..

这是另一个代码,我需要修改它。

以删除与电话无关的字符:

var phone = "er+f375g25123435s67";
phone = phone.replace(/[^+|\d]/g, "");  // result = "+3752512343567"
然后,要匹配电话模式:

if (phone.match(/^[+][0-9]{12}$/)) // or /^[+][0-9]{13}$/ for 13 digits
    ...
编辑:以下是我为测试和替换所能想到的:

phone = $(this).val().replace(/^[^+]{1}/, '');
if (phone.length > 1)
    phone = phone.substring(0,1) + phone.substring(1).replace(/[^\d]/g, '');
if (phone.match(/^[+][\d]{12}$/))
    phone = phone.substring(0,4) + " " + phone.substring(4,6) + " " + phone.substring(6,14);
位于此处:

您可以尝试以下操作:

//这将删除非数字

keyup:function(){

var phone=$(this.val().replace(/\D/g');
var myRegexp=/(\d{3})(\d{3})(\d*)/g

var match=myRegexp.exec(电话); $(this.val('+'+match[1]+''+match[2]+'+match[3])

1美元2美元和3美元应为375 25 1234567美元

评论:很抱歉,我不知道你想要一个带代码的完整答案。


代码的第一部分工作正常,但第二部分不工作。示例字符串的结果是“+”和13位,而有效字符串的结果是12位。我不确定哪一位数字正确。亲爱的卡博特,但我不需要匹配电话模式,我需要动态转换它(在输入中)…-类似这样的事情(代码快完成了)我注意到在你的JSFIDLE中出现了这个问题。我想看看我是否能想出一个模式来处理这个问题。请按一个Fork按钮并给我一个新的URL。不幸的是,这个代码不起作用(),因为这里有一个错误
(\D+++)
如何编码
ipt=“+”+ipt substring(0,3)+“+ipt substring(4,6)+”+ipt.substring(7)
转换为正则表达式?我用一个有效的答案更新了我的答案,包括一个要在移动中格式化的正则表达式,请现在检查
}
$('input').live({   
    keyup: function() {           
        var ipt = $(this).val().replace(/[^\d]*/g, ""); // remove non-digits

        ipt = ipt.replace(/(\d{1,3})(\d{1,2})?(\d{1,7})?.*/g, '+$1 $2 $3');

        $(this).val(ipt);       
    }
});