2012-08-09 117 views
0

要格式化從第三方服務正確數據改變貨幣的位置,我在想,如果這個表達式是不夠簡潔:我如何使用正則表達式

(([\d,.]+))(1?\sR\$) 

可以改變:爲

from 200 R$ to 400 R$ (32 products) 

這樣的:

from R$ 200 to R$ 400 (32 products) 

格式化此輸出,我使用的Preg$3 $1來代替文本,如http://www.regextester.com/

這是夠好還是正則表達式不夠?

+0

而且可測試與此javascript:' 「從200 R $ 400 R $」 .replace(/(([\ S + \ d,。] +)) (1?\ sR \ $)/ g,「$ 3 $ 1」);' – 2012-08-09 12:10:59

回答

2

正則表達式:(\d+[.,]?\d*)(\s*)(R\$)

更換:$3$2$1


測試輸入:

from 200 R$ to 400 R$ (32 products) 
from 0,200 R$ to 0.400 R$ (32 products) 
from 2,00 R$ to 4.00 R$ (32 products) 

測試輸出:

from R$ 200 to R$ 400 (32 products) 
from R$ 0,200 to R$ 0.400 (32 products) 
from R$ 2,00 to R$ 4.00 (32 products) 

如果您希望在不LEA還解析小數丁零,如.200,然後使用正則表達式

(?=[.,]?\d)(\d*[.,]?\d*)(\s*)(R\$) 
0
  1. 你絕對可以刪除第一套或支架

    $2 $1

  2. 什麼是1?好更換?如果有1處,將將由[\d,.]+匹配第一組的結束,所以它也是多餘

  3. 別拿\s到你的捕獲組,你將不得不在隨後一個得多結果

所以我認爲這將是你的正則表達式:

([\d,.]+)\s(R\$)