2017-07-17 98 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

美丽。如果我可以的话,我会投票(低声誉) –