首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >preg_replace -如果$4为空,则不要包含字符串

preg_replace -如果$4为空,则不要包含字符串
EN

Stack Overflow用户
提问于 2010-04-27 15:51:40
回答 1查看 156关注 0票数 1

我有这样的表达:

代码语言:javascript
运行
复制
$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是空的,我如何设置它?不会出现吗?

非常感谢你能提供的任何帮助。我希望这是清楚的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-27 17:00:14

我不确定这个花哨的正则表达式是否真的有必要

但让我们看看..。

啊,我在4美元左右修改了这个地区

若要允许丢失分机号码,请执行以下操作。你能分辨出不同之处吗?

代码语言:javascript
运行
复制
...
$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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2722737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档