2011-07-17 109 views

回答

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

這可能不會像'嗨123abc'的輸入做預期的事情。 – Mat

+0

現在應該沒問題了,我錯過了一些應該在最後的東西:) – user841092

1

在Ruby(PHP可能接近),我會

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

做到哪裏//之間的部分是正則表達式和\b指示文字邊界。請注意,這會將"hi 123 foo"轉換爲"hi foo"(注意:單詞之間應該有兩個空格)。如果語言只用空格分開,你可以選擇使用

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

它取代的兩個空格用一個空格包圍位數每個序列。這可能會在字符串末尾留下數字,這可能不是您想要的。

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

使用模式\b\d+\b其中\b與字邊界匹配。這裏有一些測試:

$tests = array(
    'hi123', 
    '123hi', 
    'hi 123', 
    '123' 
); 
foreach($tests as $test) { 
    preg_match('@\b\d+\[email protected]', $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 
相關問題