2012-11-02 95 views
-2

我需要一個正則表達式來從給定字符串中提取分數,小數和整數值。例如,輸入將如下所示。從字符串中提取分數,小數和數字的正則表達式

  • 1/2蘋果
  • 1.5橙
  • 2.5橙
  • 1檸檬

和輸出應以下。

  • 1/2
  • 1.5
  • 2.5

我想出如何提取餾分,十進制和分別使用3個不同的正則表達式的整數值,但我不能找出一種方法來用一個正則表達式提取所有可能的數字值。

我正在使用Javascript String對象的匹配方法。

任何幫助將不勝感激。

+1

太棒了,你有什麼試過? –

回答

1

那麼爲什麼不提供你的工作正則表達式呢?

但在這裏是怎麼回事,只是使用的交替:

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

這已經是稍微優化。你可以簡單地分開你的三個正則表達式|

1

在這種情況下,最簡單的可能的正則表達式(假設你的號碼總是在字符串的開頭)是:

^\S+ 

例子:

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

我可能已經簡化了這些問題。該字符串還包含'/'字符。 – ywplee

+0

@ user1721547:您最後的評論沒有多大意義。它包含在哪裏? – zerkms

1

如果你確保所有的字符串具有相同的格式(即以數量,空格,文本開頭),甚至不需要正則表達式:

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

使用正則表達式

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

...這將導致Javascript代碼

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

檢查this小提琴/演示。

+0

@ohaal - 檢查小提琴/演示。 –

相關問題