我正在处理地址,但我只想删除街道号码,例如
123 Fake St
我使用以下正则表达式/[^a-z ]/i'
,它正常工作并导致
Fake St
但有时我会有
等地址 M4 Western Distributor Fwy
我如何保留M4部分?因为如果我运行我的正则表达式,它将变为
M Western Distributor Fwy
任何帮助都会受到赞赏,欢呼声
答案 0 :(得分:1)
使用
/\b[^a-z ]+\b/i
作为你的正则表达式。这将匹配由单词边界限定的一个或多个非字母的任何出现。实际上,如果你只想删除数字,你应该使用
/\b[\d]+\b/
答案 1 :(得分:1)
尝试
/^[0-9 ]+(?=[^\d]+)/i
这匹配除了数字之外的所有数字,test:
$subject = '123 Fake St';
var_dump(preg_replace('/^[0-9 ]+(?=[^\d]+)/i', '', $subject));
$subject = 'M4 Western Distributor Fwy';
var_dump(preg_replace('/^[0-9 ]+(?=[^\d]+)/i', '', $subject));
输出:
string(7) "Fake St"
string(26) "M4 Western Distributor Fwy"
答案 2 :(得分:1)
有时非正则表达式方法也值得
$test="123 Fake St";
$arr=explode(" ",$test);
if(ctype_digit($arr[0])){
$test=str_replace($arr[0],"",$test);
}
echo $test;