将电话国家/地区代码与javascript匹配

将电话国家/地区代码与javascript匹配,javascript,regex,Javascript,Regex,我试图实现一个javascript函数来替换电话号码中的国家代码部分 输入是+90(533)33333,我想用javascript替换+90部分。我试着写一个正则表达式,但没有成功 /^\++[a-z]+\s$/ 编辑:最终解决方案 $("#ddlCountry").change(function () { if ($("#tMobile").val() == '') { $("#tMobile").val("+" + $(this).find(":selected")

我试图实现一个javascript函数来替换电话号码中的国家代码部分

输入是+90(533)33333,我想用javascript替换+90部分。我试着写一个正则表达式,但没有成功

/^\++[a-z]+\s$/
编辑:最终解决方案

$("#ddlCountry").change(function () {
    if ($("#tMobile").val() == '') {
        $("#tMobile").val("+" + $(this).find(":selected").attr("CountryCode")
        + " ");
    } else {
        $("#tMobile").val($("#tMobile").val().replace(/^(\+\d*)/,
        "+" + $(this).find(":selected").attr("CountryCode")));
    }
});

只要您能保证您的输入将采用该格式:

var phone = '+90 (533) 333 33 33';
    phone.replace(/^\+[0-9]{2}/,'xyz')
前:+90(533)333 33


在:xyz(533)333 33

之后,假设国家代码和下一个数字之间始终有一个非数字字符,则以下模式应与任何模式匹配:
/^(\+\d*)/

()

编辑: 可以这有点傻,你也可以这样做:

var phoneNumber = "+90 (533) 333 33 33";
phoneNumber = phoneNumber.replace(/^(\+)(\d*)(.*)/, '$1852$3');
alert(phoneNumber);
()

我试图使新的国家代码中不必包含加号,但除了上面所示,我找不到其他方法。基本上,它使用三个捕获组:一个用于加号,一个用于国家代码,另一个用于电话号码的其余部分。在新的国家代码中,我将国家代码本身夹在
$1
$3
之间,意思是:


将旧电话号码替换为新电话号码,新电话号码由第一个捕获组(加号)组成,后面是新的国家代码(“852”),后面是电话号码的其余部分(“533)333 33”)。

这比正则表达式快得多

function replaceCountryCode ( number, replaceWith ) {
    return replaceWith + number.substr( number.indexOf( ' ' ) );
};
演示:
性能:


在匹配数字时,为什么要使用
[a-z]
?该正则表达式将匹配一个或多个
+
,后跟一个或多个
a-z
,后跟一个空格。我看不出它怎么能匹配
90
。它也不包括执行任何替换的任何命令。你能包含更多的代码吗?这看起来不够接近……因为[0-9]也不起作用。。我对正则表达式不太在行。@Hasan,我在寻找更满意的解决方案时删除了这个答案。不过,我会继续删除它。我目前正试图找出如何只替换国家代码中的数字,而不是加号。上面的代码可以工作,但它要求新的国家/地区代码包含加号。哦,对不起,请使用这个
/^\+[0-9]{1,}/
。它将用1-3位数字匹配国家代码。
function replaceCountryCode ( number, replaceWith ) {
    return replaceWith + number.substr( number.indexOf( ' ' ) );
};