2013-06-25 47 views
1

我需要使用正則表達式來驗證輸入 $ 10.00 0r($ 10.00)中的下列金額格式...即金額應該是帶有$ sign或沒有括號。如果是其他格式,驗證必須失敗。請在此建議。

+0

這是什麼 「R2」 格式?它是否對小數位數進行限制? – Kash

+0

金額只有兩位小數 –

回答

2

UPDATE:
基於下面的意見和關於R2格式問題的意見,修改後的正則表達式是:

((\($\d+\.\d{2}\))|($\d+\.\d{2}))

早前出現過:
試試這個正則表達式:

\$\s*\(?\d+(\.\d+)?\)?

\$ - 相匹配的美元符號
\s* - 美元符號和數字或支架
\(?匹配任何空白betn - 相匹配的可選左括號
\d+ - 數量的整數部分匹配
(\.\d+)? - 比賽用點
\)?可選的小數部分 - 匹配的可選右括號

所以,你可以試試這個XSD驗證:

<xs:simpleType name="CurrencyFormat"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="\$\s*\(?\d+(\.\d+)?\)?" /> 
    </xs:restriction> 
</xs:simpleType> 
+0

不錯,但(a)您不需要(也不一定)在XSD正則表達式中轉義$,並且(b)您不想接受沒有匹配的左括號右括號,反之亦然。而且(c)雖然OP不清楚,但他們似乎想要精確到小數點右側的兩位數字,這與貨幣金額相同。 –

+0

該模式應該適用於$ 10.00和($ 10.00)格式。我希望你的答案可以用於第一個,但第二個? –

+0

這也允許:'$ 10.00)'和'($ 10.00' –

1

試試這個:

^(\(\$\d+\.\d{2}\)|\$\d+\.\d{2})$ 
+0

我不認爲xsd驗證支持錨標籤 – Kash

+0

錨標籤?反正,在RegexCoach它似乎工作,可能你需要檢查xsd文檔,看看它的正則表達式如何映射到標準正則表達式 –

+1

從OP的問題標籤來看,我懷疑需要符合XSD的正則表達式;而不是'^(\( \ $ \ d + \。\ d {2} \)| $ \ d + \ $。 \ d {2} \)'。 –