2017-07-17 102 views
3

首先的特定部分,我知道很多像這樣的已經問過的問題,但它是我很難總結我的頭周圍的正則表達式,請嘗試,如果你能解釋它。提取字符串用JavaScript

我有一個不斷變化的字符串,它是:TOKEN (SwapToken) - 1005.00000127 TOKEN

只有數量的變化,它可以改變儘可能少的對1005.000001281500.001,我創建了一個程序提取,當我需要的字符串。唯一的事情是,我需要分離/提取數字,或者提取字符串,然後創建另一個只包含數字的變量。

編碼看起來會不一樣,因爲編號會有變化嗎?我如何才能完成只提取數字? Regex是最好的選擇,我知道可能還有其他幾個。

謝謝

+0

你總是有破折號「 - 」?如果是這樣,你可以在它上面分割,然後在TOKEN上分割。像這樣:str.split(' - ')[1] .split('TOKEN')[0] .trim() – valin077

+1

你可以使用:'str.match(/ [0-9。] + /)[0 ]' –

+0

你總是有點「。」?如果是這樣,你可以使用正則表達式'\ d + \。\ d +'。 –

回答

6

這裏有一個簡單的正則表達式,你可以使用

/\d+\.\d+/g

雖然它讓你的輸入假設。主要是沒有其他的東西會看起來像一個十進制數。

\ d表示任意數字(0 - 9)
\。意思是文字週期(。)
+表示前面的一個或多個字符

您需要反斜槓,因爲在正則表達式中a。意味着匹配任何角色,所以你必須逃避它。

這種特殊的正則表達式發現任何可被找到任何看起來像一個或多個數字後跟一個「」看起來像一個十進制數後跟一個或多個數字。

let str = "TOKEN (SwapToken) - 1005.00000127 TOKEN" 
 

 
let num = str.match(/\d+\.\d+/g)[0]; 
 

 
console.log(parseFloat(num))

這裏有一個網站,你可以測試正則表達式的。它有一些整潔的功能。並解釋你的正則表達式是做右側

https://regex101.com/r/8RuY3A/1

+0

美麗。如果我可以的話,我會投票(低聲譽) –