从字符串中提取分数、小数和数字的正则表达式[关闭]

Posted

技术标签:

【中文标题】从字符串中提取分数、小数和数字的正则表达式[关闭]【英文标题】:regular expression to extract fraction, decimal and number from a string [closed] 【发布时间】:2012-11-02 23:06:50 【问题描述】:

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

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

输出应该如下。

1/2 1.5 2.5 1

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

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

任何帮助将不胜感激。

【问题讨论】:

太棒了,你试过什么? 【参考方案1】:

使用正则表达式

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

...导致 Javascript 代码

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

检查thisfiddle/demo。

【讨论】:

@ohaal - 检查小提琴/演示。【参考方案2】:

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

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

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

这已经稍微优化了。你可以简单地用|分隔你的三个正则表达式。

【讨论】:

【参考方案3】:

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

^\S+

例子:

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

【讨论】:

我可能把问题简化得太多了。该字符串还包含“/”字符。 @user1721547:你最后的评论没有多大意义。它包含在哪里?【参考方案4】:

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

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

【讨论】:

以上是关于从字符串中提取分数、小数和数字的正则表达式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

求大神帮忙写一个只允许是百分数的js正则表达式(从0%至100%,中间数字允许两位小数)。

如何用正则表达式去除一个字符串里面的数字和小数点以外的字符

从字符串正则表达式 PHP 中提取数值 [关闭]

正则表达式从bash脚本中的字符串中提取第一个浮点数

Perl正则表达式提取浮点数

英尺和英寸的正则表达式 - 带小数和分数