PHP - 在任何字母之前删除任何数字

时间:2012-05-28 06:50:18

标签: php regex numbers expression

我正在处理地址,但我只想删除街道号码,例如

123 Fake St

我使用以下正则表达式/[^a-z ]/i',它正常工作并导致

Fake St

但有时我会有

等地址

M4 Western Distributor Fwy

我如何保留M4部分?因为如果我运行我的正则表达式,它将变为

M Western Distributor Fwy

任何帮助都会受到赞赏,欢呼声

3 个答案:

答案 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;