Php Regex验证并更正电话号码
目前,我正在使用此版本的代码验证和更正给定的电话号码:Php Regex验证并更正电话号码,php,regex,Php,Regex,目前,我正在使用此版本的代码验证和更正给定的电话号码: function validateTelephoneNumber($parameters){ $validTel = "<^((\\+|00)[1-9]\\d{0,3}|0 ?[1-9]|\\(00? ?[1-9][\\d ]*\\))[\\d\\-/ ]*$>"; $telNumber = $parameters; if (preg_match($validTel, $
function validateTelephoneNumber($parameters){
$validTel = "<^((\\+|00)[1-9]\\d{0,3}|0 ?[1-9]|\\(00? ?[1-9][\\d ]*\\))[\\d\\-/ ]*$>";
$telNumber = $parameters;
if (preg_match($validTel, $telNumber)) {
$telNumber = preg_replace("<^\\+>", "00", $telNumber);
$telNumber = preg_replace("<\\D+>", "", $telNumber);
}
return $telNumber;
}
你能帮忙吗?谢谢电话号码的转换(验证后)可以分三步完成 步骤1:如果没有国家代码,则将前导零替换为
“43”
。
如果字符串正好包含一个正斜杠或以左括号开头,我假设没有国家代码。要添加defautlt国家/地区代码,我们可以将以下正则表达式的匹配项替换为“43”
。PHP的正则表达式引擎执行以下操作:
^ : assert beginning of string
(?: : begin non-capture group
\(0* : match '(' followed by 0+ zeroes
| : or
0* : match 0+ zeros
(?= : begin positive lookahead
\d+\/\d+ : match 1+ digits, '/', 0+ digits
$ : assert end of string
) : end positive lookahead
) : end non-capture group
^ : assert beginning of string
0+ : match 1+ zeroes
| : or
[ +\/()-] : match one character in the character class
这将转换字符串
0043/2342/213412-1234
+43234 2312341234 12
07234/32434
(0677)32423434
0049 171 12341234
0031 9872 12341234
0043(07234)1234-1234
到
步骤2:删除不需要的字符
对于这一步,我们用空字符串替换以下正则表达式的匹配项
^0+|[ +\/()-]
。PHP的正则表达式引擎执行以下操作:
^ : assert beginning of string
(?: : begin non-capture group
\(0* : match '(' followed by 0+ zeroes
| : or
0* : match 0+ zeros
(?= : begin positive lookahead
\d+\/\d+ : match 1+ digits, '/', 0+ digits
$ : assert end of string
) : end positive lookahead
) : end non-capture group
^ : assert beginning of string
0+ : match 1+ zeroes
| : or
[ +\/()-] : match one character in the character class
这将把步骤1中获得的字符串转换为以下内容
4323422134121234
43234231234123412
43723432434
4367732423434
4917112341234
31987212341234
430723412341234
步骤3:将'+'
添加到字符串开头
这是最容易用PHP语句完成的,它生成以下字符串
+4323422134121234
+43234231234123412
+43723432434
+4367732423434
+4917112341234
+31987212341234
+430723412341234
@卡里·斯沃兰:是的,这是个好主意,但是,下面的数字并没有按照希望的那样更正。。0049 171 12341234,0031 9872 12341234,0043(07234)1234-1234我误解了问题的一个方面。我已经修改了我的答案。请注意,在我的“步骤1”中,我关于如何确定字符串是否不包含国家代码的假设可能不正确,因为问题中没有明确的标准。@cary\u swoveland Hy,我尝试了以下php代码:“``函数validateTelephoneNumber($parameters){$validTel=“([\d\(\)\s\.-\d]{4,}\d)”;$telNumber=$parameters;if(preg_match($validTel,$telNumber)){$telNumber=preg_replace(“^(?:\(0*| 0*(?=\d+\/\d+$)”,“43”,$telNumber);$telNumber=preg_replace(“^0+\[+\/()-]”,“,“,$telNumber”);$telNumber=”+。$telNumber;}返回$telNumber;}“``但它并没有如你所愿工作。我不懂PHP,所以我不能帮你,但也许其他读者可以。有什么规则告诉你,
0043/2342/213412-1234
中的43
是国家代码,而07234/32434
中的72
不是国家代码?以后请在一个国家代码中显示示例中使用的数据m这使得读者可以很容易地剪切和粘贴以测试他们的答案。这里只需要表格的第一列就可以了。将其与其他列分开并不困难。如果您单独显示第一列,然后分别显示所需的结果,则会更容易。
+4323422134121234
+43234231234123412
+43723432434
+4367732423434
+4917112341234
+31987212341234
+430723412341234