2017-09-03 76 views
3

的字符串:$ 22.4969694
正則表達式表達:([.])+獲取貨幣值的小數部分

我試過.test(),但我並不想取得布林迴應,我試圖讓長度數.字符和切片。

因此,如果在字符串中檢測到.,它會將$ 22.切斷字符串並將變量值設置爲4969694

+0

你必須躲避點,\。就其本身而言,它是一個匹配任何字符的通配符。 –

+0

使用正則表達式:([\。])+ –

回答

3

沒有一個正則表達式,這是相當直截了當

var str1 = '$ 22.4969694'; 
 
var str2 = '$ 22694'; 
 

 
console.log(str1.split('.').pop()) // 4969694 
 
console.log(str2.split('.').pop()); // nothing happens

1

我不是100%確定我會按照你希望你的最終結果看起來像,但這是我想出來的,可能適合你。

根據你想要返回這個工作的值。

let vals = ['$ 22.4969694', '$ 22', '$ 22567.00'] 
 

 
vals.forEach(val => { 
 
    let v = val.replace(/^.*\./, '') 
 

 
    console.log(v) 
 
})

+0

或:val.replace(/^.*\./,'')如果點存在,這將從字符串的前部移除到點。如果沒有,那麼沒有任何反應。 –

1

您可以使用match

const str = '$ 22.4969694'; 
const regex = /(\$)\s+(\d+)\.(\d+)/ 

match將返回一個數組。第一個元素是原始字符串,其餘元素是匹配的。在這種情況下,貨幣符號,然後是美元,然後是美分。

str.match(regex) // [ "$ 22.4969694", "$", "22", "4969694" ] 

您可以訪問這些使用普通陣列方法:

const m = str.match(regex); 
console.log(m[3]); // 4969694