-3

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

  • 1/2 个苹果
  • 1.5橙
  • 2.5橙
  • 1个柠檬

并且输出应该如下。

  • 1/2
  • 1.5
  • 2.5
  • 1

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

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

任何帮助将不胜感激。

4

4 回答 4

3

使用正则表达式模式

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

...导致 Javascript 代码

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

检查这个小提琴/演示。

于 2012-11-02T23:15:31.523 回答
1

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

"1/2 apples".split(" ").shift();   // gives "1/2"
于 2012-11-02T23:14:27.873 回答
1

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

^\S+

例子:

'1/2 apples'.match(/^\S+/) // ["1/2"]
'1 lemon'.match(/^\S+/) // ["1"]
于 2012-11-02T23:09:48.470 回答
1

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

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

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

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

于 2012-11-02T23:08:20.260 回答