我有这样的表达:
$regex_phone = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'
.'(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})'
.'[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';
if(!preg_match($regex_phone, $data['phone'])){
$error[] = "Please enter a valid phone number.";
}else{
$data['phone'] = preg_replace($regex_phone, '($1) $2-$3 ext.$4', $data['phone']);
}这将需要一个电话号码,例如: 803-888-8888分机2以及803-888-8888
第一个数字格式为:(803) 888-8888 ext.2 -预期效果
第二个数字格式为:(803) 888-8888分机。-空白分机
如果$4是空的,我如何设置它?不会出现吗?
非常感谢你能提供的任何帮助。我希望这是清楚的。
发布于 2010-04-27 17:00:14
我不确定这个花哨的正则表达式是否真的有必要
但让我们看看..。
啊,我在4美元左右修改了这个地区
若要允许丢失分机号码,请执行以下操作。你能分辨出不同之处吗?
...
$regex_phone =
'/^
(?:
1(?:[. -])?
)?
(?:
\( (?=\d{3} \) ) # possible mistake? (probably correct)
)?
([2-9]\d{2}) # $1
(?:
(?<=\(\d{3})\)
)?
\s?
(?:
(?<=\d{3})
[.-]
)?
([2-9]\d{2}) # $2
[.\s-]?
(\d{4}) # $3
(?:
\s? ext [.\s]?
(\d{1,5})? # $4
)?
$/ix';
if( preg_match( $regex_phone, $data['phone'], $m) ) {
$data['phone'] = "$m[1] $m[2]-$m[3]" . (isset($m[4]) ? " ext.$m[4]" : '');
}
else {
$error[] = "Please enter a valid phone number.<br />";
}
...问候
rbo
https://stackoverflow.com/questions/2722737
复制相似问题