我有一个用户表单,我在其中一个字段中输入了一个电话号码作为输入。我有两个单独的RegEx语句检查输入。
首先是:
preg_match('/^([\(]{1}[0-9]{3}[\)]{1}[\.| |\-]{0,1}|^[0-9]{3}[\.|\-| ]?)?[0-9]{3}(\.|\-| )?[0-9]{4}$/', $phone);
它很有效。它可以识别许多不同的格式,即222-333-4444或2224445555。
另一方面,当我尝试:
preg_replace('/\+?1?[-\s.]?\(?(\d{3})\)?[-\s.]?(\d{3})[-\s.]?(\d{4})/g', '($1) $2-$3', $phone);
应该将传入的字符串格式化为(222)333-4444格式,$ phone在preg_replace()调用后保持不变。
非常感谢任何帮助!
答案 0 :(得分:7)
只是为了确保:您需要捕获返回值,preg_replace
不会直接修改参数:
$phone = preg_replace(..., $phone);
答案 1 :(得分:0)
简化上述内容,并提出以下建议:
preg_replace( '/\b(\d{3})\D?(\d{3})\D?(\d{4})\b/' , '($1) $2-$3' , $inString );
测试结果:
preg_replace( '/\b(\d{3})\D?(\d{3})\D?(\d{4})\b/' , '($1) $2-$3' , '222-333-4444' );
# Returns '(222) 333-4444'
preg_replace( '/\b(\d{3})\D?(\d{3})\D?(\d{4})\b/' , '($1) $2-$3' , '2223334444' );
# Returns '(222) 333-4444'
答案 2 :(得分:0)
是/ g导致模式中的错误。一旦我删除它,它工作。谢谢大家的尝试!