如何使用正则表达式删除PHP中字符串中的独立数字?
示例:
"hi123"
不应修改。
"hi 123"
应转换为"hi "
。
答案 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);