【发布时间】:2015-10-13 18:32:31
【问题描述】:
我的邮政编码字符串需要如下所示:
11111 22222 33333 44444 55555 等
如果客户输入 11111、22222、33333、55555 或其他不是 5 个数字(数字)后面或前面有 1 个可选空格的内容,我希望它删除坏的并留下正确的
因此,例如,如果有人输入 11111 2222A 33333,它应该只返回 11111 33333,或者如果他们输入 11111、22222、33333,它应该返回 11111 22222 33333。我也希望它正确返回,如果他们做 11111,22222,33333 但我知道如何用我认为的空格替换逗号,所以我可以单独检查
到目前为止,我的正则表达式测试如下:
$data = '11111 2222A 33333';
// Attempt 1
$x = preg_replace('/^([\s]*\d{5})+[\s]*$/','',$data);
// Attempt 2
$y = preg_replace('/[^\s?(?=\d{5})(?=\s?)*]/','',$data);
$x = preg_replace('/!\d{5}\s?/','',$y);
// Attempt 3
$x = preg_replace('/[^\b\d{5}\b\s]/','',$data);
return $x;
我正在尝试用空格替换不匹配 5 位数字的内容(可选,因此它匹配字符串中的第一个邮政编码和结尾的邮政编码),从而有效地删除它们。
但到目前为止,它所做的只是删除 2222A 中的 A 并留下 2222。一次只有一次尝试不会被注释掉。
【问题讨论】: