正则表达式从字符串中提取分数,小数和数字

时间:2012-11-02 23:06:50

标签: javascript regex number-formatting

我需要一个正则表达式来从给定的字符串中提取分数,十进制和整数值。例如,输入将如下所示。

  • 1/2 apples
  • 1.5 orange
  • 2.5 orange
  • 1个柠檬

输出应该跟随。

  • 1/2
  • 1.5
  • 2.5
  • 1

我想出了如何使用3个不同的正则表达式分别提取分数,十进制和整数值,但我无法想出用一个正则表达式提取所有可能的数值的方法。

我目前正在使用Javascript String对象的匹配方法。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

使用正则表达式

\d+([/.]\d+)?

...导致Javascript代码

var n = str.match(/\d+([\/.]\d+)?/g);

检查this小提琴/演示。

答案 1 :(得分:1)

那么为什么不展示你的工作正则表达呢?

但这是如何,只需使用替换:

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

这已经略微优化了。您可以简单地将三个正则表达式分隔|

答案 2 :(得分:1)

在这种情况下最简单的正则表达式(假设您的数字始终位于字符串的开头)是:

^\S+

示例:

'1/2 apples'.match(/^\S+/) // ["1/2"]
'1 lemon'.match(/^\S+/) // ["1"]

答案 3 :(得分:1)

如果您确定所有字符串具有相同的格式(即以金额,空格,然后是文本开头),则甚至不需要正则表达式:

"1/2 apples".split(" ").shift();   // gives "1/2"