当插入电话号码时,用户倾向于以083-XXXXXXX
或(083)XXXXXXX
或XXXXXXX
等各种方式输入内容。我的意思是扩展和手机,有时只是电话。如何让preg_match()
接受-XXX
或(XXX)
然后返回真实手机?例如,(083) 1234567
将为1234567
。
我使用了这种方法:
preg_match("/^[-0-9]{10,20}$/",$value);
preg_replace("/(083-)/","",$value);
但它似乎只接受083-
。我希望它可以接受-083
或(083)
我该怎么做?
答案 0 :(得分:1)
你在这里:
$value = preg_replace('/^((?:\(\d+\)|\d+)[- ]?)?(\d+)$/', '$2', $value);
答案 1 :(得分:0)
答案 2 :(得分:0)
这种模式可行:
~^(\(\d+\)|\d+\-)?\d{10,20}$~
这是测试脚本:
<?php
$pattern = ''; // the regexp
$input = ''; // the phone number
$valid = preg_match($pattern, $input) ? 'valid' : 'INVALID';
echo 'The number is ' . $valid; // it prints out valid if phone number accepts prints out INVALID if phone number rejects
?>
我的模式:
~^(\(\d+\)|\d+\-)?\d{10,20}$~
嗯......我们来试试吧!
$pattern = '~^(\(\d+\)|\d+\-)?\d{10,20}$~';
$input = '(083)0123456789';
输出:The number is valid
下一个号码......
$input = '0123456789';
输出:The number is valid
下一步:
$input = '083-0123456789';
输出:The number is valid
让我们测试 INVALID 号码以确保其正常运行
$input = '083+0123456789';
输出:The number is INVALID
下一步:删除前缀
代码:
echo preg_replace('~(\(\d+\)|\d+\-)~', '', $input);
// input:(083)0123456789 , output: 0123456789
// input: 0123456789, output: 0123456789
// input: 083-0123456789, output: 0123456789
完成!