2011-04-14 45 views
1

我試圖讓一個正則表達式工作,將取代除數字和小數點(簡單)以外的所有內容。棘手的部分:小數點是可選的,但如果存在的話,必須由另一個數字跟蹤。替換一切,但數字和>實際<小數點

所以:

.10 => 10 
10. => 10 
10.- => 10 
1.0 => 1.0 

我不太知道如何定義「除了數字其次是可選的小數點之後的可選的小數點,但強制性號」位:)

謝謝!

+0

的正則表達式是_fun _但我會強烈建議花一個小時!或者兩個學習基礎知識。對於初學者,您需要了解哪些字符是特殊的:_「元字符」_需要被轉義(即反斜槓放在前面 - 規則在字符類內部和外部是不同的)。 :[www.regular-expressions.info](http://www.regular-expressions.info/)。你花在那裏的時間會多次爲自己付出。快樂的regexing! – ridgerunner 2011-04-14 15:58:23

+0

感謝您的評論。正則表達式對我來說實際上並不陌生,對於正則表達式我通常很舒服,但是我已經生鏽了,而且我總是在用替換語句的否定模式方面遇到麻煩。乾杯 – Chris 2011-04-15 07:20:13

回答

2

這將是這樣的:

\d+(\.\d+)? 

(請注意,您所使用的正則表達式語法可能需要不同的轉義。)

+0

謝謝。我正在使用JavaScript,我試過這個:'string.replace(/ [^ \ d +(\。\ d +)]?/ g,'');' - 這不起作用。 20.00。將導致20.00。 - 對不起,我總是無法理解否定模式。 – Chris 2011-04-14 14:45:45

+0

不,不能使用方括號!它們僅適用於各種角色,例如'[abc]'匹配'a','b','c'和'[^ abc]'之一匹配任何不是'a','b'或'c'的字符,但不能使用爲了否定整個比賽。你必須以不同的方式做。你必須收集所有數字(不是使用'replace',而是'match'或類似的東西],然後創建一個連接這些數字的新字符串。這就是你所追求的結果。 – UncleZeiv 2011-04-14 15:01:43

+0

我想我可以直接替換它。提取匹配並丟棄其餘的作品。謝謝! – Chris 2011-04-14 15:24:50

相關問題