使用PHP正则表达式删除独立的数字

时间:2011-07-17 08:11:39

标签: php regex

如何使用正则表达式删除PHP中字符串中的独立数字?

示例:

  • "hi123"不应修改。

  • "hi 123"应转换为"hi "

4 个答案:

答案 0 :(得分:2)

使用\b\d+\b模式匹配单词边界的模式\b。以下是一些测试:

$tests = array(
    'hi123',
    '123hi',
    'hi 123',
    '123'
);
foreach($tests as $test) {
    preg_match('@\b\d+\b@', $test, $match);
    echo sprintf('"%s" -> %s' . "\n", $test, isset($match[0]) ? $match[0] : '(no match)');
}
// "hi123"  -> (no match)
// "123hi"  -> (no match)
// "hi 123" -> 123
// "123"    -> 123

答案 1 :(得分:1)

在Ruby中(PHP可能很接近),我会用

来做
string_without_numbers = string.gsub(/\b\d+\b/, '')

其中//之间的部分是正则表达式,而\b表示单词边界。请注意,这会将"hi 123 foo"变为"hi foo"(注意:单词之间应该有两个空格)。如果单词仅以空格分隔,则可以选择使用

string_without_numbers = string.gsub(/ \d+ /, ' ')

用一个空格替换由两个空格包围的每个数字序列。这可能会在字符串末尾留下数字,这可能不是您想要的。

答案 2 :(得分:0)

preg_replace('/ [0-9]+( |$)/S', ' ', 'hi 123 aaa123 123aaa 234');

答案 3 :(得分:0)

preg_replace('/ [0-9]+.+/', ' ', $input);