我有這樣的正則表達式可以正常工作完美匹配USA格式($ 1.50)的貨幣值:正則表達式爲貨幣價值
Regex money = new Regex(@"\w\^\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$");
我想有一定的幫助,以瞭解如何建立一個這樣的正則表達式,我需要更改我的國家的格式,如更改$爲R $。
我期待在MSDN上的主題,但沒有到目前爲止工作...
我有這樣的正則表達式可以正常工作完美匹配USA格式($ 1.50)的貨幣值:正則表達式爲貨幣價值
Regex money = new Regex(@"\w\^\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$");
我想有一定的幫助,以瞭解如何建立一個這樣的正則表達式,我需要更改我的國家的格式,如更改$爲R $。
我期待在MSDN上的主題,但沒有到目前爲止工作...
你的問題有三個部分,並我聽起來好像它主要是關於「學習如何釣魚」,這很棒。
** A。正則表達式你想**
基礎上的評論,你正在尋找這個(see demo):
^R\$\d+(?:\.\d{3})*,\d{2}$
的正則表達式
的B.說明這是一個相對簡單的正則表達式,爲此您可以閱讀自動生成的解釋。有幾個網站這樣做。這裏是one(它會在原始網站上顯示得更好)。
NODE EXPLANATION
-------------------------------------------------------------------------------- \w word characters (a-z, A-Z, 0-9, _)
-------------------------------------------------------------------------------- \^ '^'
-------------------------------------------------------------------------------- \$ '$'
-------------------------------------------------------------------------------- ( group and capture to \1:
--------------------------------------------------------------------------------
\d{1,3} digits (0-9) (between 1 and 3 times
(matching the most amount possible))
--------------------------------------------------------------------------------
( group and capture to \2 (0 or more times
(matching the most amount possible)):
--------------------------------------------------------------------------------
\, ','
--------------------------------------------------------------------------------
\d{3} digits (0-9) (3 times)
--------------------------------------------------------------------------------
)* end of \2 (NOTE: because you are using a
quantifier on this capture, only the
LAST repetition of the captured pattern
will be stored in \2)
-------------------------------------------------------------------------------- | OR
--------------------------------------------------------------------------------
( group and capture to \3:
--------------------------------------------------------------------------------
\d+ digits (0-9) (1 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
) end of \3
-------------------------------------------------------------------------------- ) end of \1
-------------------------------------------------------------------------------- ( group and capture to \4 (optional
(matching the most amount possible)):
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
\d{2} digits (0-9) (2 times)
-------------------------------------------------------------------------------- )? end of \4 (NOTE: because you are using a
quantifier on this capture, only the LAST
repetition of the captured pattern will be
stored in \4)
-------------------------------------------------------------------------------- $ before an optional \n, and the end of the
string
C.我怎樣才能學會建立一個正則表達式像那樣
下面是我推薦的資源。
書籍:精通正則表達式(第3版),正則表達式食譜
網站:regular-expressions.info,RexEgg,FAQ on SO
工具:使用RegexBuddy(商業,但優秀的調試器) ,regex101.com,Debuggex.com
你可以只是在你的正則表達式添加R
像這樣:
Regex rmoney = new Regex(@"\w\^R\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$");
是否有一個教程/文章或可以讓我明白如何建立一個?我只是不明白這些斜線括號等...; s – PlayHardGoPro
@PlayHardGoPro,http://regexone.com/ – sshashank124
如果我* * 1,50 * R *作爲參數傳遞給* isMatch *它仍然返回false .. 。 – PlayHardGoPro
如果我把** R ** *放在** \ $ **之前,並且保留它: *正則表達式金錢= new Regex(@「\ w \^R \ $(\ d {1,3}(\,\ d {3})* |(\ d +))(\。\ d {2})$」) ; *。而我嘗試使用* isMatch *的值* R $ 1,50 *它仍然返回false。爲什麼? – PlayHardGoPro
@PlayHardGoPro你發送了幾個錯別字。這是更清潔的'^ R \ $(\ d {1,3}(,\ d {2})* |(\ d +))?$':)如果您在regex101.com上使用它,您可以看到結果馬上 – zx81
@PlayHardGoPro這裏是一個[demo](http://regex101.com/r/nG6sX3)順便說一句'''後面的部分允許你匹配更多的數字,如果沒有逗號,那就是你想要的? – zx81