2012-11-13 41 views
0
var text1 = "this is %60.94 correct?" 
var text2 = "is this %45?" 
var text3 = "looks like %45.5/%54.5." 
var text4 = "what about 5 or 10 = %22.5.2." 

現在我正在使用這個,text.match(/%[^\s\/\,]+/g),但它不處理更多的邊緣案例。改變我的正則表達式來查看任何非數字字符?

我需要能夠停止除第一個.以外的任何非數字字符。

任何關於如何修改正則表達式的指針會很好。這是我想要從每個輸出。

text1.match(regex) -> [60.94] 
text2.match(regex) -> [45] 
text3.match(regex) -> [45.5, 54.5] 
text4.match(regex) -> [22.5] 

感謝您的幫助。

對不起,規則:任何%籤任何非數字字符的情況除外的.

也初審後:發現所有實例是非常重要的

+0

爲什麼文字3將不會返回54.5也是爲什麼不會文本4回'[5,10,22.5]'或者類似的? – gdoron

+0

if%.2是否要捕獲.2? – Christophe

+0

是的,這將是正確的輸出 – boom

回答

4

正則表達式可以是簡單:

/%(\d+(\.\d+)?)/ 

Updated DEMO

+0

你能檢查我的編輯嗎?這會在'text4'的情況下工作嗎? – boom

+0

@boom。很難遵守規則......你能否定義它們?爲什麼text3和text4的值不同? – gdoron

+0

對不起編輯規則 – boom

0

這應該這樣做:

/%(\d*\.?\d+|\d+\.?\d*)/g 

(編輯爲邊緣情況)

相關問題