我的国家/地区代码为$countryCode
,电话号码为$phone_no
。电话号码一开始就会有国家/地区代码,因此我必须从$phone_no
删除国家/地区代码,并获取普通电话号码而不附加任何代码。
例如,如果国家是印度尼西亚,我会得到:
$country_code = '62';
$phone_no = '+62509758151';
// need to get 509758151
目前我正在尝试使用正则表达式和修剪函数
$result = ltrim( preg_replace("/[^0-9]+/", "",$phone_no) , $country_code);
// $result is 509758151
在这种情况下适用但在电话号码以国家代码中提到的数字开头时失败。 $phone_no = '+62609758151';
$result = ltrim( preg_replace("/[^0-9]+/", "",$phone_no) , $country_code);
// $result is 09758151 which is incorrect
更不用说它也会因为像+62629758151
这样的琐碎案例而失败请提出建议。我知道基于字符串的解决方案,如substr()
等,但我正在寻找一些基于正则表达式的解决方案
答案 0 :(得分:3)
答案 1 :(得分:0)
$mobile='1234567891';Mobile number like this.
$numberwith_country_code='+911234567891';Mobile with country code like this.
$mobile = preg_replace('/\s+/', '',$_POST['mobile']);
$str = strlen($mobile);
$numberwith_country_code= preg_replace('/\s+/', '',$_POST['numberwith_country_code']);
$numberwith_country_code= substr($numberwith_country_code,0,-$str);
输出如下: 手机-> 1234567891 numberwith_country_code-> + 91
js插件链接:-https://www.jqueryscript.net/form/jQuery-International-Telephone-Input-With-Flags-Dial-Codes.html
答案 2 :(得分:-1)
如果您只想选择2个前缀数字:
\+\K\d{2}
如果你想要整个前缀:
\+\d{2}