2010-07-29 47 views
0

你好我怎樣才能讓我只允許數字[^ 0-9]和數字前面的減號。例如: 有效值= -1 ...- 9,無效= --1 -...在preg_replace幫助申請例外

+0

[^ 0-9]匹配「*不*一個數字,從0-9' 。 – 2010-07-29 18:40:09

回答

2

只是刪除所有的無效字符,並檢查其餘有一個有效的格式:

$cleaned = preg_replace('/[^-0-9]+/', '', $str); 
if (preg_match('/^-?[0-9]+$/', $cleaned)) { 
    // now valid 
} 

好吧,這裏是另一個建議:

preg_replace('/.*?(-?\d+).*/', '$1', $str) 
+0

謝謝,但是當我應用它時,它什麼也不返回: var_dump(preg_replace('/(^ - ?[0-9 ] +)?。* |^[^ - 0-9] + /','$ 1',' - $ ---- matches-- 12--')); //輸出字符串''(長度= 0) – jartaud 2010-07-29 19:14:23

+0

@jartaud:我撤回了我的第一個建議。 – Gumbo 2010-07-29 19:28:46

+0

全景圖是:Im爲_GET變量掃描,幫助我使用JS go方法。現在我想要做的是刪除除減號以外的所有字符?get = - 2'''#$%$%$應該是:?get = -2 – jartaud 2010-07-29 19:29:07

1

應儘可能簡單...

preg_match('#^-?[0-9]$#', $input); 

更新

preg_replace('#-\d#', $replacement, $input); 
+0

注意問號使得減號是可選的,如果需要刪除問號。 – 2010-07-29 18:38:51

+0

感謝您的幫助,是的,標誌是必需的,我只需要在前面(-digit) – jartaud 2010-07-29 18:41:43

+0

我添加了基於新信息的更新。 – 2010-07-29 18:58:33

1
/^-\d+$/ 

,或者如果減去是可選

/^-?\d+$/