亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是“最佳”美國貨幣正則表達式?

什么是“最佳”美國貨幣正則表達式?

炎炎設計 2019-10-16 14:16:56
快速搜索貨幣正則表達式會帶來很多結果。我在選擇其中之一時遇到的問題是,如果不測試所有邊緣情況,很難驗證正則表達式。我可以花很多時間在此上,因為我確信其他數百名開發人員已經做過。是否有人擁有經過全面測試的美元正則表達式?我唯一的要求是匹配的字符串是US Currency并解析為System.Decimal:[ws] [sign] [digits,] digits..fractional-digits] [ws] 方括號([和])中的元素是可選的。 下表描述了每個元素。 元素描述ws可選的空格。sign可選標志。digits一系列數字,范圍從0到9。,一個特定于文化的千位分隔符。。特定于文化的小數點符號。分數數字范圍從0到9的數字序列。 
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

這是Regex Buddy制造商的一些東西。這些來自圖書館,所以我相信它們已經過全面測試。


數字:貨幣金額(必須為美分),可選的千位分隔符;強制性兩位數


Match; JGsoft:

^[+-]?[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2}$

數字:貨幣金額(可選的美分)可選的千位分隔符;可選的兩位數小數


Match; JGsoft:

^[+-]?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})?$

數字:貨幣金額US和EU(可選的美分)可以使用美式123,456.78表示法和歐式123.456,78表示法??蛇x的千位分隔符;可選的兩位數小數


Match; JGsoft:

^[+-]?[0-9]{1,3}(?:[0-9]*(?:[.,][0-9]{2})?|(?:,[0-9]{3})*(?:\.[0-9]{2})?|(?:\.[0-9]{3})*(?:,[0-9]{2})?)$


查看完整回答
反對 回復 2019-10-16
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

根本沒有經過完全測試(我只是寫了它!),但是表現正常:


^-?(?:0|[1-9]\d{0,2}(?:,?\d{3})*)(?:\.\d+)?$

測試集:


0

1

33

555

4,656

4656

99,785

125,944

7,994,169

7994169

0.00

1.0

33.78795

555.12

4,656.489

99,785.01

125,944.100

-7,994,169

-7994169.23 // Borderline...


Wrong:

000

01

3,3

5.

555,

,656

99,78,5

1,25,944

--7,994,169

0.0,0

.10

33.787,95

4.656.489

99.785,01

1-125,944.1

-7,994E169

注意:您的System.Decimal依賴于語言環境,很難在正則表達式中創建,除非在構建時。我假設即使在某些文化(區域設置)中有不同的規則,數字也要按三組進行分組。

在其周圍添加空格很簡單。


查看完整回答
反對 回復 2019-10-16
  • 3 回答
  • 0 關注
  • 613 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號